2010-06-15 79 views
1

我們有Spring和JPA(Hibernate)的容器事務。我需要對錶進行更新以通過本地語句「標記」某些行。然後我們通過EntityManager從JPATemplate插入一些行到這個表。之後,我們需要通過本地語句(使用Oracle的聯合和減號,複雜組...)來計算表中的更改如何在一次事務中使用本地查詢讀取更改的值? (Spring和JPA)

我看到步驟1和步驟2中的更改未提交,因此爲什麼來自3失敗。我已經嘗試使用事務傳播REQUIRES_NEW,EntityManager.flush ...沒有工作。

1) update SOMETABLE acolumn = somevalue (native) 
2) persist some values into SOMETABLE (via entity manager) 
3) select values from SOMETABLE 

是否有可能讀取步驟3中步驟1和步驟2的更改?

回答

1

我猜你是在JpaTransactionManagerJdbcTemplateJpaTemplate使用相同的DataSource並啓用@Transactional這一點:

<tx:annotation-driven /> 

假設它是不是配置錯誤,我最好的猜測是,你打電話從同一個類中的方法的@Transactional方法?

在這種情況下,您需要使用AspectJ編織事務邏輯或重構代碼,以便@Transactional方法位於除調用方法之外的另一個類中。 (重構選項是簡單和首選的)

如果這不能解決您的問題,您應該將相關的類與相關的日誌消息一起添加到您的問題中。

相關問題