下边这个方法是struts 中action类中的某个方法,当访问他时:
public void fortest(){
Session session = HUtil.getSession();
session.beginTransaction();
// session.flush();
session.getTransaction().commit();
session.beginTransaction();
//session.flush();
session.getTransaction().commit();
/* service.selectRoomCount(room);*/
}
会报告错误:session被关闭了,只好加上session.flush()方法。其中getSession()是获取ThreadLocal的session。
然后就会报告错误nested transactions not supported--不支持嵌套的事物。
原理不清楚,但是解决方法很简单:重新开启一个session,即调用sessionfactory.openSession()方法,
然后在事物提交后关闭session即可。
有没有能解析下原理的大神?