Spring 我可以在一个事务中使用指向同一数据源的两个不同的实体管理器吗?
我在JPA中使用spring。我有两个EntityManager,它们包含不同的实体(一个应用程序的不同模块),并且都指向同一个数据源 我是否可以在一个事务中同时使用这两个选项(使用单个TransactionManager)? 我必须使用JTA吗?如果是这样,在tomcat下使用它的最佳选项是什么Spring 我可以在一个事务中使用指向同一数据源的两个不同的实体管理器吗?,spring,jpa,transactions,jta,spring-transactions,Spring,Jpa,Transactions,Jta,Spring Transactions,我在JPA中使用spring。我有两个EntityManager,它们包含不同的实体(一个应用程序的不同模块),并且都指向同一个数据源 我是否可以在一个事务中同时使用这两个选项(使用单个TransactionManager)? 我必须使用JTA吗?如果是这样,在tomcat下使用它的最佳选项是什么 如何在spring中配置它?标准JPA事务和spring的JpaTransactionManager都绑定到单个EntityManager。他们无法与多个经理交谈,因此无法协调他们之间的交易 如果需要
如何在spring中配置它?标准JPA事务和spring的
JpaTransactionManager
都绑定到单个EntityManager
。他们无法与多个经理交谈,因此无法协调他们之间的交易
如果需要这样做,您需要合并实体管理器配置,以便只有一个EntityManager
,或者使用JTA事务(通过Spring的JtaTransactionManager)
如果您使用的是Tomcat(它没有现成的JTA支持),那么您需要找到第三方JTA实现 我选择了第一个选项:在运行时合并实体管理器。大概是这样的: