【发布时间】:2013-11-19 09:23:13
【问题描述】:
我目前正在尝试让 Spring Data JPA 与两个 DataSource 以及两个 EntityManager 一起工作。我的存储库都继承自自定义基类“BaseRepositoryImpl”。
问题: 我总是遇到以下异常:
org.springframework.beans.factory.NoSuchBeanDefinitionException:
No unique bean of type [javax.persistence.EntityManagerFactory] is defined:
expected single bean but found 2: entityManagerFactory1,entityManagerFactory2
问题: 如何告诉我的自定义 RepositoryFactory 使用哪个 EntityManagerFactory?
这是我的 Spring 配置:
<jpa:repositories base-package="package1" transaction-manager-ref="..."
factory-class="MyFactoryBean"
entity-manager-factory-ref="entityManagerFactory1"/>
<bean id="dataSource1" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="..." />
</bean>
<bean id="entityManagerFactory1" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="dataSource" ref="dataSource1" />
<property name="persistenceUnitName" value="unit1" />
...
</bean>
<jpa:repositories base-package="package2" transaction-manager-ref="..."
factory-class="MyFactoryBean"
entity-manager-factory-ref="entityManagerFactory2"/>
<bean id="dataSource2" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="..." />
</bean>
<bean id="entityManagerFactory2" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="dataSource" ref="dataSource2" />
<property name="persistenceUnitName" value="unit2" />
...
</bean>
“MyFactoryBean”类的实现与http://docs.spring.io/spring-data/jpa/docs/1.4.x/reference/htmlsingle/#repositories.custom-behaviour-for-all-repositories 中的描述完全相同。
至少在使用自定义 RepositoryFactory 时,Spring 似乎忽略了配置“entity-manager-factory-ref”。
有什么提示吗?
【问题讨论】:
-
您能否发布堆栈跟踪信息以及发生错误的代码?
标签: spring-data spring-data-jpa