【发布时间】:2014-01-15 12:59:40
【问题描述】:
我正在使用带有 HibernateTemplate(3.6.7.Final) 和 Spring Data JPA(1.3.0.RELEASE) 的 Spring(3.1.4 版本)。 我在我的配置文件中定义了两个事务管理器,一个用于 Hibernate,另一个用于 Spring Data JPA。两个事务管理器都使用不同的数据源。
<bean id="jpaTransactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>
<bean id="transactionTemplate" class="org.springframework.transaction.support.TransactionTemplate">
<property name="transactionManager" ref="transactionManager" />
</bean>
我希望我的代码中的一些方法使用 Hibernate 的事务管理器和一些方法来使用 Spring data JPA 的事务管理器。 (Spring Doc link - 10.5.6.2 使用 @Transactional 的多个事务管理器)
我在我的配置文件中定义了注解驱动的事务,默认是选择Hibernate的事务模板
<tx:annotation-driven />
对于使用 Spring Data JPA 的事务管理器运行方法,我在我的方法定义中提到了事务管理器的名称,即 @Transactional(value = "jpaTransactionManager") ,但是在将记录插入 DB 之后,线程被挂起,进一步的代码是未调用。
@Transactional(value = "jpaTransactionManager")
public void transactionMethod()
{
Object obj = createObj();
repository.save(obj); //data is inserted in DB here but after that thread is getting hanged here and below business logic is not called
// Some business logic
}
使用 Hibernate 的事务管理器的方法工作正常,但使用 Spring Data JPA 的事务管理器的方法不工作。
我尝试了以下事情但没有成功
- 对两个事务管理器使用两个。
- 注释 @Transactional(value = "jpaTransactionManager") 都在 类级别和方法级别。
非常感谢您对上述问题的任何帮助。
【问题讨论】:
标签: spring hibernate transactions spring-data-jpa