Получение подключения к базе данных в чистых настройках JPA - PullRequest
56 голосов
/ 16 августа 2010

У нас есть приложение JPA (использующее hibernate), и нам нужно передать вызов унаследованному инструменту отчетности, которому в качестве параметра требуется соединение с базой данных JDBC.Есть ли простой способ получить доступ к соединению JDBC, в котором находится hibernate?

Ответы [ 12 ]

1 голос
/ 17 мая 2011

Я столкнулся с этой проблемой сегодня, и это был трюк, который я сделал, который работал для меня:

   EntityManagerFactory emf = Persistence.createEntityManagerFactory("DAOMANAGER");
   EntityManagerem = emf.createEntityManager();

   org.hibernate.Session session = ((EntityManagerImpl) em).getSession();
   java.sql.Connection connectionObj = session.connection();

Хотя это не лучший способ, но делает свою работу.

0 голосов
/ 27 января 2016

Вот фрагмент кода, который работает с Hibernate 4 на основе ответа Доминика

Connection getConnection() {
    Session session = entityManager.unwrap(Session.class);
    MyWork myWork = new MyWork();
    session.doWork(myWork);
    return myWork.getConnection();
}

private static class MyWork implements Work {

    Connection conn;

    @Override
    public void execute(Connection arg0) throws SQLException {
        this.conn = arg0;
    }

    Connection getConnection() {
        return conn;
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...