Java 如何从实体管理器获取jpa数据源属性 大家好

Java 如何从实体管理器获取jpa数据源属性 大家好,java,jpa,entitymanager,jta,Java,Jpa,Entitymanager,Jta,我想知道是否可以通过实体管理器获取数据库连接属性 我的persistence.xml如下所示 <persistence ...> <persistence-unit name="default" transaction-type="JTA"> <jta-data-source>DatasourceForTestSystem</jta-data-source> <class> some.p

我想知道是否可以通过实体管理器获取数据库连接属性

我的persistence.xml如下所示

<persistence ...>
     <persistence-unit name="default" transaction-type="JTA">
          <jta-data-source>DatasourceForTestSystem</jta-data-source>
          <class> some.package.and.some.Class </class>
          ...
     </persistence-unit>
</persistence>
java.sql.Connection conn = em.unwrap(java.sql.Connection.class);
其中url类似于jdbc:oracle:thin:@1.2.3.4:5678:database。 我将jdeveloper12c与EclipseLink一起使用,这是一个Oracle数据库,没有Hibernate

有人知道如何获取有关连接属性的信息吗

亲切问候,

斯特菲

--更新-- @再次感谢您的帮助,但正如我在帖子中提到的,我根本不使用Hibernate

我已经尝试过像这样使用Connection.class

<persistence ...>
     <persistence-unit name="default" transaction-type="JTA">
          <jta-data-source>DatasourceForTestSystem</jta-data-source>
          <class> some.package.and.some.Class </class>
          ...
     </persistence-unit>
</persistence>
java.sql.Connection conn = em.unwrap(java.sql.Connection.class);
从。在这个语句中,我总是为连接和getSession()得到一个NPE

((JNDIConnector)em.unwrap(JpaEntityManager.class)
    .getSession().getLogin().getConnector()).getName();


我很困惑为什么这些解决方案对我有效。可能我遗漏了一些东西:-(

使用JPA最多只能查询或的属性。可用属性的列表因提供程序和单个提供程序的不同版本而异

按如下方式访问EMF的属性:

Map<String,Object> props = emf.getProperties();

我已经试过了,只得到了三个属性。它们都不包含必要的信息。这就是为什么我想知道是否有其他方法可以从实体管理器获取主机、端口、数据库用户或其他信息:-(但无论如何,感谢您的帮助:-)@Stoffelchen-你可以尝试
连接
接口,它离金属更近。@Stoffelchen-我为没有什么帮助表示歉意。我将在这里留下我的答案作为对后代的警告-这不起作用。一旦找到解决方案,一定要发布并接受。你得到了我的投票:)没关系:-)你帮了大忙。你告诉我,我至少在正确的轨道上!