2013-11-09 5 views
4

Возможно ли получить связанное с ним имя единицы целостности объекта EntityManager? Например, у вас естьКак получить имя единицы постоянства от EntityManager

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

Можно ли получить имя fooPU от em? Мотивация для этого заключается в том, что я хочу провести небольшой тест, чтобы проверить, что введенный em через @Inject связан с правой единицей сохранения.

+1

Из верхней части моей головы, свойства EMFactory ('entityManager.getEntityManagerFactory().() ') может содержать имя PU – kostja

+1

@kostja: Спасибо. На самом деле, это мое текущее решение, за исключением того, что у меня нет 'getEntityManagerFactory()', т. Е. Я использую 'entityManager.getProperties()', который дает ту же карту свойств, что и ваша. Но на этой карте нет отдельного имени PU-ключа. Тем не менее, у него есть имя PU, встроенное в некоторые другие ключи. Вы можете получить имя PU с некоторым взломом, но это просто не кажется мне чистым. – JBT

+0

Да, чистое было бы иначе :) К сожалению, я не знаю другого способа. – kostja

ответ

5

GetProperties имя модуля под настойчивость ключ «hibernate.ejb.persistenceUnitName» в свойствах Карта

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

Что делать, если поставщик JPA не спящий режим, например EclipseLink? – JBT

Смежные вопросы