org.hibernate.SessionException:会话关闭
问题描述:
public List<Examination> loadExaminations(int pID) {
session = sessionFactory.openSession();
session.setFlushMode(FlushMode.MANUAL);
ManagedSessionContext.bind(session);
session.beginTransaction();
Patient tpatient = (Patient) session.get(Patient.class, pID);
List<Examination> examinations = new LinkedList<>();
if (tpatient.getExaminations()!=null)
if (!tpatient.getExaminations().isEmpty()) { //I get the exception to this line
examinations = (List<Examination>) tpatient.getExaminations();
}
ManagedSessionContext.unbind(sessionFactory);
session.flush();
session.getTransaction().commit();
session.close();
return examinations;
}
例外:org.hibernate.SessionException:会话关闭
org.hibernate.SessionException: Session is closed
我得到的例外,但实际上它似乎是精细的程序;正在发生永恒的事情,但例外是困扰着我。
感谢您的帮助!
答
如果写入您的Hibernate Config文件会话关闭标记中,则不需要使用session.close()方法,否则将会话关闭标记写入hibernate配置文件并删除session.close()语句。
像下面一行写入休眠配置文件。
<property name='transaction.auto_close_session'>true</property>
'session.getTransaction()。提交()'会自动关闭会话,所以我认为除了正在由'session.close()'抛出? 'flush()'也是不必要的。 – MattR
不,这个tpatient.getExaminations()。isEmpty()语句抛出异常! – BLama
您可能正在处理分离的对象。 – Jay