我们有一个JPA应用程序(使用hibernate),我们需要将调用传递给需要JDBC数据库连接作为参数的旧式报告工具。有没有一种简单的方法可以访问hibernate已设置的JDBC连接?
您想在哪里获得该连接尚不清楚。一种可能是从.NET Session使用的基础Hibernate中获取它EntityManager。使用JPA 1.0,您必须执行以下操作:
Session
EntityManager
Session session = (Session)em.getDelegate(); Connection conn = session.connection();
请注意,该getDelegate()方法不是可移植的,此方法的结果特定于实现:上面的代码在JBoss中有效,对于GlassFish,您必须对其进行调整- 请看一下使用EntityManager.getDelegate()时要小心。
getDelegate()
在JPA 2.0中,情况要好一些,您可以执行以下操作:
Connection conn = em.unwrap(Session.class).connection();
如果您在容器中运行,还可以在configure上执行查找DataSource。
DataSource