2013-11-09 40 views
4

是否可以获取EntityManager对象的关联持久性单元名称?例如,你有如何从EntityManager获取持久性单元名称

@PersistenceContext(unitName="fooPU") 
private EntityManager em; 

是否有可能得到的名字fooPUem?这样做的动机是我想进行一个小测试来验证通过@Inject注入的em与正确的持久性单元相关联。

+1

从我的头顶时,EMFactory('entityManager.getEntityManagerFactory()的属性。GetProperties中()')可能包含PU名称 – kostja

+1

@kostja:谢谢。事实上,除了我没有'getEntityManagerFactory()',即我使用'entityManager.getProperties()',它给出了与你相同的属性映射外,这是我当前的解决方法。但该地图没有独立的PU名称密钥。不过,它的确有PU名称嵌入在其他一些键中。你可以通过一些黑客来获得PU的名字,但对我来说这似乎并不干净。 – JBT

+0

是的,干净将是不同的:)不幸的是,我不知道一种不同的方式。 – kostja

回答

5

的持久性单元名称是属性键“hibernate.ejb.persistenceUnitName”下地图

String puName = em.getEntityManagerFactory().getProperties().get("hibernate.ejb.persistenceUnitName").toString() 
+1

如果JPA提供程序不像Hibernate那样处于休眠状态,该怎么办? – JBT

相关问题