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