2014-12-07 67 views
0

我們使用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

回答

0

HHH000326「在我們稱之爲EntityManager.joinTransaction()的地方,實際上是我們的軟件問題,這在Hibernate 4.1中不再需要。」 檢查此問題爲同一個問題:https://forum.hibernate.org/viewtopic.php?p=2455341&

+0

感謝您深入瞭解您的軟件 - 但它是Spring中的一個bug,在我的情況下,自Spring 4.2以來已經修復。 – 2015-09-19 10:03:46

+0

對不起,我只是複製了鏈接鏈接顯示在網絡上的文字。我使用Spring 4.1(cry)。 – 2015-11-11 06:54:26