如何从hibernate 5中的会话工厂获取连接提供程序?获取连接的方法不再存在,并且不会被javadoc中的任何内容替换。此代码段在4.1中有效,但在5.1中则没有(具体而言,getConnectionProvider()不存在)。
private SessionFactory factory;
private ServletOutputStream outputStream;
private ServletContext context;
public Object execute(Map properties) {
InputStream input = null;
try {
Session session = factory.getCurrentSession();
SessionFactoryImplementor sessionFactoryImplementation = (SessionFactoryImplementor) session.getSessionFactory();
ConnectionProvider connectionProvider = sessionFactoryImplementation).getConnectionProvider();
Connection conn = connectionProvider.getConnection();
答案 0 :(得分:1)
对于hibernate 5.2.10,试试这个:
public Connection getConnection(){
try {
return ((SessionImplementor) sessionFactory).getJdbcConnectionAccess()
.obtainConnection();
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
见:
Docs Hibernate 4.1 - SessionFactoryImplementor.getConnectionProvider()
答案 1 :(得分:0)
正如Allinger Medeiros所说,ConnectionProvider在Hibernate 4中已弃用,在Hibernate 5中不可用。 但是,正如Gwaptiva指出的那样,他的解决方案导致ClassCastException。
这对我有用:
JdbcConnectionAccess connectionAccess =
((SessionImplementor)sessionFactory.getCurrentSession())
.getJdbcConnectionAccess();