如何从EntityManager获取持久化单元名称

问题描述 投票:0回答:2

是否可以获取EntityManager对象关联的持久化单元名称?例如,您有

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

可以从

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

jpa persistence-unit
2个回答
8
投票

持久化单元名称位于属性映射中的“hibernate.ejb.persistenceUnitName”键下

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

0
投票

您可以在文件 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”

我希望可以帮助仍然有此需求的人。

© www.soinside.com 2019 - 2024. All rights reserved.