以编程方式访问JPA <persistence-unit-metadata>

chr*_*603 6 java jpa eclipselink

是否可以<persistence-unit-metadata>通过Java API 访问信息?

<persistence-unit-metadata>
    <persistence-unit-defaults>
        <schema>MySchema</schema>
    </persistence-unit-defaults>
</persistence-unit-metadata>
Run Code Online (Sandbox Code Playgroud)

我想通过JPA API或EclipseLink API阅读模式"MySchema",这是我使用的实现.

类似于:entityManager.getDefaults().getSchema(); 可以投射或使用任何EclipseLink类,这对此很好.

谢谢

chr*_*603 6

调试一段时间后,我找到了一个访问实体模式的解决方案.

EntityType<MyEntity> entity = emf.getMetamodel().entity(MyEntity.class);

EntityTypeImpl entityTypeImpl = (EntityTypeImpl) entity;        
ClassDescriptor descriptor =  entityTypeImpl.getDescriptor();

String schema = descriptor.getDefaultTable().getTableQualifier();
Run Code Online (Sandbox Code Playgroud)

寻找更简单,更好的方式来访问信息!非常感谢.

  • 或者在Session上获取默认限定符,em.unwrap(Session.class).getLogin().getTabl eQualifier(); (2认同)