我可以在一个事务中使用两个指向同一数据源的不同实体管理器吗?

时间:2012-01-25 15:58:10

标签: spring jpa transactions jta spring-transactions

我正在使用带有JPA的spring。我有两个EntityManagers包含不同的实体(一个应用程序的不同模块),并且都指向相同的数据源。

我可以在一个事务中使用它们(使用单个TransactionManager)吗? 我必须使用JTA吗?如果是这样,在tomcat下使用它的最佳选择是什么?

如何在春季配置?

1 个答案:

答案 0 :(得分:3)

标准JPA事务和Spring JpaTransactionManager都绑定到单个EntityManager。他们无法与多个经理交谈,因此无法协调跨越他们的交易。

如果您需要这样做,您需要合并您的实体管理器配置,这样您只有一个EntityManager,或者使用JTA事务(通过Spring的JtaTransactionManager)。

如果您正在使用Tomcat(没有开箱即用的JTA支持),那么您需要找到第三方JTA实现。