是否可以获取EntityManager对象关联的持久化单元名称?例如,您有
@PersistenceContext( unitName="fooPU" )
private EntityManager em;
可以从
fooPU
得到名字em
吗?这样做的动机是我想进行一个小测试来验证通过 @Inject
注入的 em 是否与正确的持久性单元相关联。
持久化单元名称位于属性映射中的“hibernate.ejb.persistenceUnitName”键下
String puName = em.getEntityManagerFactory().getProperties().get("hibernate.ejb.persistenceUnitName").toString()
您可以在文件 persistence.xml 的“属性”部分中添加另一个“属性”。
示例:
<persistence-unit name="pu-foo" transaction-type="JTA">
<jta-data-source>jdbc/some-name</jta-data-source>
<!-- other fields/properties -->
<properties>
<property name="persistence-unit-name" value="pu-foo" />
<!-- other fields/properties -->
</properties>
</persistence-unit>
并且,在您的 java 代码中,假设您有一个名为 myEM 的 EntityManager...
System.out.println(myEM.getEntityManagerFactory().getProperties().get("persistence-unit-name"));
这会打印“pu-foo”
我希望可以帮助仍然有此需求的人。