【发布时间】:2018-09-26 14:29:57
【问题描述】:
考虑拥有两个实体管理器工厂:
<bean id="writeEntityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">...</bean>
<bean id="readOnlyEntityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">...</bean>
然后我想要两个 Bean,我将向其中注入正确的持久性上下文:
<bean id="readOnlyManager" class="..MyDatabaseManager">
<bean id="writeManager" class="..MyDatabaseManager">
bean 看起来像:
public class MyDatabaseManager {
private javax.persistence.EntityManager em;
public EntityManager(javax.persistence.EntityManager em) {
this.em = em;
}
...
}
这显然不行,因为EntityManager不是bean,不能这样注入:
No qualifying bean of type 'javax.persistence.EntityManager' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {}
如何在 bean 中限定正确的 EntityManager?我以前用@PersistenceContext注解,但是这个不能用,需要注入。
如何为此类 Bean 指定 PersistenceContext?
更新:我的问题是如何通过 XML 而不是通过注释注入带有限定符的 PersistenceContext。
【问题讨论】:
-
你可以注入 EntityManagerFactory
-
这是个好主意吗?获得 enitymanager 的唯一方法是通过
emFactory.getNativeEntityManagerFactory().createEntityManager()创建一个新的。我不确定创建一个新的是否是个好主意? -
@Vojtěch 这里有详细信息codingpedia.org/ama/…