我們使用JPA(Hibernate 4)和Spring 4來管理JTA交易。爲了允許延遲初始化,即使在沒有任何事務的情況下簡單地從數據庫中讀取,我們添加了「OpenEntityManager」模式。交易傳播支持導致「HHH000326:無法加入交易」警告
但是,如果此模式處於活動狀態,Spring會嘗試將已打開的實體管理器加入到SUPPORTS事務中(EntityManagerFactoryUtils.doGetTransactionalEntityManager
)。然而,Hibernate否認有(某種方式誤導)警告這個請求:
WARN: HHH000326: Cannot join transaction: do not override hibernate.transaction.factory_class
我認爲應該joinTransaction()
只有TransactionSynchronizationManager.isActualTransactionActive()
叫?
您可以在GitHub上https://github.com/abenneke/sandbox/tree/master/spring-hibernate4-transaction
找到一個測試用例這些問題,謝謝!
(我們現在解決此警告,只需添加另一個EntityManagerProxy跳過任何joinTransaction()
要求,如果沒有實際交易活動的工作。)
更新2015年7月: 我現在創造了這一個改進的要求: https://jira.spring.io/browse/SPR-13242
感謝您深入瞭解您的軟件 - 但它是Spring中的一個bug,在我的情況下,自Spring 4.2以來已經修復。 – 2015-09-19 10:03:46
對不起,我只是複製了鏈接鏈接顯示在網絡上的文字。我使用Spring 4.1(cry)。 – 2015-11-11 06:54:26