交易传播SUPPORTS导致" HHH000326:无法加入交易"警告

时间:2014-12-07 17:31:07

标签: spring hibernate jpa transactions spring-transactions

我们正在使用JPA(Hibernate 4)和Spring 4来管理JTA事务。为了允许延迟初始化,即使只是在没有任何事务的情况下从数据库中读取,我们也添加了“OpenEntityManager”模式。

然而,在激活此模式的情况下,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

1 个答案:

答案 0 :(得分:0)

HHH000326"在我们称之为EntityManager.joinTransaction()的某个地方实际上是我们软件的一个问题,在Hibernate 4.1中不再需要它。" 将此问题视为同一问题:https://forum.hibernate.org/viewtopic.php?p=2455341&