如何接收EntityManager的持久单元名称?

问题描述:

在一个Java EE应用程序中,我在EJB3.0 SessionBean上使用@PersistenceContext来让EntityManager自动装配。如何接收EntityManager的持久单元名称?

由于我使用多个数据源,我想以编程方式确定EntityManager的自动装配的PersistenceUnit名称。任何机会?

您可以通过这种方式获取多个实体管理器:

EntityManagerFactory emf = Persistence.createEntityManagerFactory("name your PU") 
EntityManager em = emf.createEntityManager(); 
... 
em.close(); 
emf.close(); 

但我不知道是不是一个很好的解决方案。 Annotation @PersistenceContext允许只检索一个实体管理器。但是你可以尝试创建一个类/无状态的bean,它将保留多个PU,并从你需要的PU中提取它。也许这比使用EntityManagerFactory好一点。