Подумайте о том, чтобы иметь две фабрики менеджера сущностей:
<bean id="writeEntityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">...</bean>
<bean id="readOnlyEntityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">...</bean>
Затем я хочу иметь два Бина, в который я бы вставил правильный контекст персистентности:
<bean id="readOnlyManager" class="..MyDatabaseManager">
<bean id="writeManager" class="..MyDatabaseManager">
Боб будет выглядеть как-токак:
public class MyDatabaseManager {
private javax.persistence.EntityManager em;
public EntityManager(javax.persistence.EntityManager em) {
this.em = em;
}
...
}
Это, очевидно, не работает, потому что EntityManager не является бином и не может быть введен таким образом:
No qualifying bean of type 'javax.persistence.EntityManager' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {}
Как я могу квалифицировать правильный EntityManager в бине?Раньше я использовал аннотацию @PersistenceContext
, но ее нельзя использовать, поскольку мне нужно ее внедрить.
Как я могу указать PersistenceContext для такого компонента?
ОБНОВЛЕНИЕ: У меня вопрос, каквведите PersistenceContext с квалификатором через XML, а не с помощью аннотации.