【问题标题】:How to setup JTA with multiple XA datasoures for Spring JPA?如何为 Spring JPA 设置具有多个 XA 数据源的 JTA?
【发布时间】:2015-10-04 13:23:00
【问题描述】:

Spring JPA 4.2.1

尝试使用 2 个 XA 数据源设置 JTA 如下所示,但得到 NoUniqueBeanDefinitionException

“没有定义 [javax.persistence.EntityManagerFactory] ​​类型的合格 bean:预期单个匹配 bean,但找到 2:emf_1,emf_2”

<bean id="emf_1"
    class="...LocalContainerEntityManagerFactoryBean">
    <property name="jtaDataSource" ref="xa_1" />
</bean>
<bean id="emf_2"
    class="...LocalContainerEntityManagerFactoryBean">
    <property name="jtaDataSource" ref="xa_2" />
</bean>
@Repository
public class DAO {
    @PersistenceContext@Qualifier("emf_1")
    private EntityManager em_1;
    @PersistenceContext@Qualifier("emf_2")
    private EntityManager em_2;
    /*...*/
}

如何让它发挥作用?

【问题讨论】:

    标签: spring jpa jta


    【解决方案1】:

    @Solution

    它现在在下面工作,

    <bean class="...LocalContainerEntityManagerFactoryBean">
        <property name="jtaDataSource" ref="xa_1" />
        <property name="persistenceUnitName" value="pu_1" />
    </bean>
    <bean class="...LocalContainerEntityManagerFactoryBean">
        <property name="jtaDataSource" ref="xa_2" />
        <property name="persistenceUnitName" value="pu_2" />
    </bean>
    

    @Repository
    public class DAO {
        @PersistenceContext(unitName = "pu_1")
        private EntityManager em_1;
        @PersistenceContext(unitName = "pu_2")
        private EntityManager em_2;
        /*...*/
    }
    

    <persistence-unit name="pu_1" transaction-type="JTA">
    ...
    </persistence-unit>
    <persistence-unit name="pu_2" transaction-type="JTA">
    ...
    </persistence-unit>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-30
      • 1970-01-01
      • 2014-12-06
      • 2015-07-01
      相关资源
      最近更新 更多