我正在将 Spring 与 JPA 一起使用。我有两个 EntityManager,它们包含不同的实体(一个应用程序的不同模块),并且都指向相同的数据源。
我可以在一个事务中使用它们(使用单个 TransactionManager)吗? 我必须使用 JTA 吗?如果是这样,在 tomcat 下使用它的最佳选择是什么?
如何在 spring 中配置它?
最佳答案
标准 JPA 事务和 Spring 的 JpaTransactionManager
都绑定(bind)到单个 EntityManager
。他们无法与多个经理交谈,因此无法协调他们之间的事务。
如果您需要这样做,您要么需要合并实体管理器配置,这样您就只有一个 EntityManager
,或者使用 JTA 事务(通过 Spring 的 JtaTransactionManager)。
如果您使用 Tomcat(它没有现成的 JTA 支持),那么您需要找到第三方 JTA 实现。
关于spring - 我可以在一个事务中使用指向同一数据源的两个不同的实体管理器吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9005759/