2013-11-09 39 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

相關問題