我有两个不同的 EntityManager,我想在其相关 EntityManagerFactory
的遗留类(无 bean) 中使用@PersistenceContext(name = "entityManagerFactoryA")
EntityManager entityManagerA;
@PersistenceContext(name = "entityManagerFactoryB")
EntityManager entityManagerB;
我试过使用 getBean()
ApplicationContext applicationContext;
applicationContext.getBean("entityManagerFactoryA");
导致此错误的原因:
Cannot cast 'com.sun.proxy.$Proxy167' to 'java.persistence.EntityManager'
因此目前通过@PersistenceContext 将通常的注入(inject)包装到包装器 bean 中,然后从 ApplicationContext works 中获取
@Getter
@Component
private class EntityManagerAWrapper {
@PersistenceContext(name = "entityManagerFactoryA")
EntityManager entityManagerA;
}
.
.
.
applicationContext.getBean(EntityManagerAWrapper.class).getEntityManagerA();
然而,这是一个我想避免的不必要的“hack”。是否有机会以更简单的方式获得正确的 EntityManager?
最佳答案
我是这样做的:
EntityManagerFactory factory =
Persistence.createEntityManagerFactory(PERSISTENCE_UNIT_NAME);
EntityManager em = factory.createEntityManager()
关于java - 如何在不使用 @PersistenceContext 注释的情况下以编程方式获取特定的 EntityManager,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71572620/