Java Hibernate会话已关闭-帮助创建方法
我试图用HibernateSQL方法创建对象类,比如添加新记录、从数据库获取数据等。一切都很好,但只有一次。当我再次尝试调用相同的方法时,会出现“会话已关闭”错误。下面是选择一种记录方法的代码:Java Hibernate会话已关闭-帮助创建方法,java,hibernate,session,Java,Hibernate,Session,我试图用HibernateSQL方法创建对象类,比如添加新记录、从数据库获取数据等。一切都很好,但只有一次。当我再次尝试调用相同的方法时,会出现“会话已关闭”错误。下面是选择一种记录方法的代码: public static Event getSqlRecord(int id) { SessionFactory session = HibernateSessionFactory.getSessionFactory(); Session sess = session.getCurre
public static Event getSqlRecord(int id) {
SessionFactory session = HibernateSessionFactory.getSessionFactory();
Session sess = session.getCurrentSession();
Transaction tx = sess.beginTransaction();
Event ev = new Event();
try {
Query query = sess.createQuery("from Event where idWydarzenia = :id");
query.setParameter("id", id);
ev = (Event)query.uniqueResult();
} finally {
session.close();
}
session.close();
return ev;
}
关于HibernateSessionFactory,以下是类主体:
package pl.objects;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;
@SuppressWarnings("deprecation")
public class HibernateSessionFactory {
private static final SessionFactory sessionFactory;
static {
try {
sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();
}
catch (Throwable ex) {
System.out.println("Blad inicjalizacji SessionFactory" + ex);
throw new ExceptionInInitializerError(ex);
}
}
public static SessionFactory getSessionFactory() {
return sessionFactory;
}
}
我使用了一些教程中的示例。如何使此方法执行open session、do stuff然后关闭它?使用sessionFactory.getCurrentSession()时,不需要关闭会话 上下文/事务将负责为您关闭它。使用
getCurrentSession()
,SF创建一个会话
,并将其固定到“当前”上下文(在您的情况下可能是一个线程)。您不应该关闭通过getCurrentSession()
获得的会话,而应该仅通过openSession()