【发布时间】:2014-01-09 08:11:59
【问题描述】:
大家好
我想知道是否可以通过实体管理器获取数据库连接属性。
我的 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>
我想要类似的东西
String host = em.getSomeFunction().getProperties().get("server");
String database = em.getSomeFunction().getProperties().get("database");
or
String url = em.getSomeFunction().getConnectionPool().getURL();
其中 url 类似于 jdbc:oracle:thin:@1.2.3.4:5678:database。
我将 JDeveloper 12c 与 EclipseLink、Oracle 数据库和无休眠一起使用。
有人知道如何获取有关连接属性的信息吗?
亲切的问候,
史蒂芬
-- 更新--
@Kostja:再次感谢您的帮助,但正如我在帖子中提到的,我根本不使用 Hibernate。
我已经尝试过像这样使用 Connection.class
java.sql.Connection conn = em.unwrap(java.sql.Connection.class);
来自here。在这个语句中,我总是得到 Connection 和 getSession() 的 NPE
((JNDIConnector)em.unwrap(JpaEntityManager.class)
.getSession().getLogin().getConnector()).getName();
来自here。
我很困惑为什么这些解决方案都适合我。也许我错过了一些东西:-(
【问题讨论】:
标签: java jpa entitymanager jta