JPA多个持久性单元错误

raf*_*ira 6 java spring jpa multiple-databases

我正在尝试在我的项目中添加一个数据库/模式/ persistenceUnit,我收到错误:

No unique bean of type [javax.persistence.EntityManagerFactory] is defined: expected single bean but found 2

我谷歌/ api分配,无法找到为什么春天抱怨我的配置.

这是我的applicationContext.xml的一部分

  <bean id="entityManagerFactory" 
        class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">

        <property name="dataSource" ref="dataSource" />
        <property name="persistenceUnitName" value="transactionManager" />
        <property name="jpaVendorAdapter">
            <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
                <property name="showSql" value="${show.hibernate.sql}" />
                <property name="generateDdl" value="false" />
                <property name="databasePlatform" value="org.hibernate.dialect.MySQL5Dialect" />
            </bean>
        </property>
    </bean>

    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <property name="driverClassName" value="${database.driver}" />
        <property name="url" ...
        <property name="testOnBorrow" value="true" />
    </bean>

    <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
        <property name="entityManagerFactory" ref="entityManagerFactory" />
    </bean>

<bean id="entityManagerFactoryREST" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <property name="dataSource" ref="dataSourceREST" />
    <property name="persistenceUnitName" value="REST" />
    <property name="jpaVendorAdapter">
        <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
            <property name="showSql" value="${show.hibernate.sql}" />
            <property name="generateDdl" value="false" />
            <property name="databasePlatform" value="org.hibernate.dialect.MySQL5Dialect" />
        </bean>
    </property>
</bean>

<bean id="dataSourceREST" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
    <property name="driverClassName" value="${database.driver}" />
    ...
    <property name="testOnBorrow" value="true" />
</bean>

<bean id="transactionManagerREST" class="org.springframework.orm.jpa.JpaTransactionManager">
    <property name="entityManagerFactory" ref="entityManagerFactoryREST" />
</bean>

<tx:annotation-driven transaction-manager="REST"/>
<tx:annotation-driven transaction-manager="transactionManager"/>
Run Code Online (Sandbox Code Playgroud)


一些问题:

  • 我是否需要两个tx:注释驱动
  • 我是否需要在工厂中指定persistenceUnitName

我在春季论坛(LINK)上写了一些关于我的digg的笔记

那就好了......任何帮助都会很高兴!

Boz*_*zho 1

此异常意味着您正在尝试EntityManagerFactory按类型自动装配。@Autowired你的代码中有注释吗?

另外,使用时请正确@PersistenceContext设置unit属性。并且(我不确定这是否正确)-尝试将属性设置name为您各自的工厂名称。

另外,检查您是否没有错误地复制粘贴 REST 事务管理器 - 现在没有这样的 beanREST