2014-12-07 68 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