Я хочу определить две (или более) разные EntityManagerFactories, используя профили Spring; обратите внимание, что у меня может быть несколько активных профилей одновременно:
@Bean("devEMF")
@Profile("development")
public EntityManagerFactory devEntityManagerFactory(Properties properties) {
///....
}
@Bean("prodEMF")
@Profile("production")
public EntityManagerFactory prodEntityManagerFactory(Properties properties) {
///....
}
Проблема в том, что для использования лежащих в основе EntityManager мне нужно ввести их:
@PersistenceContext(unitName="prodEMF")
public void setFirstEMPersistenceContext(EntityManager entityManager) {
//...
}
но не сказано, что EntityManagerFactory "prodEMF" был создан (это зависит от активных профилей): в этом случае Spring жалуется, что "ни один бин с именем prodEMF не может быть введен".
Я не нашел способа сделать инъекцию PersistenceContext обусловленной активными профилями; например, я не могу написать:
@Profile("production")
@PersistenceContext(unitName="prodEMF")
public void setFirstEMPersistenceContext(EntityManager entityManager) {
//...
}
Есть ли решение?
Спасибо за вашу помощь!