web-dev-qa-db-fra.com

Comment obtenir une connexion jdbc à partir d'une session de mise en veille prolongée?

Je veux obtenir une connexion jdbc à partir de la session de mise en veille prolongée. Il existe une méthode à l'intérieur de la session de mise en veille prolongée, à savoir session.connection (); mais il est obsolète. je sais que cela fonctionne toujours mais je ne veux pas utiliser la méthode obsolète car je suis sûr qu'ils doivent avoir fourni une alternative pour cela? À http://docs.jboss.org/hibernate/orm/3.5/api/org/hibernate/Session.html méthode de connexion api dit utiliser org.hibernate.jdbc.Work à cet effet mais je vous ne trouvez pas d'exemple pour cela?

40
M Sach

Voici comment vous pouvez l'utiliser:

session.doWork(new Work() {
    @Override
    public void execute(Connection connection) throws SQLException {
        //connection, finally!
    }
});
84
Tomasz Nurkiewicz

Essaye ça:

((SessionImpl)getSession()).connection()
23

J'ai eu un problème similaire et j'ai utilisé la classe ConnectionProvider pour obtenir la connexion. Voir ma solution:

Session session = entityManager.unwrap(Session.class);
SessionFactoryImplementor sessionFactoryImplementation = (SessionFactoryImplementor) session.getSessionFactory();
ConnectionProvider connectionProvider = sessionFactoryImplementation.getConnectionProvider();
try {
       connection = connectionProvider.getConnection();
       ...
}
11
OldFabiotta