接受别人项目的时候遇到的
一开始接手过来,项目运行是完全没问题的,于是开始写代码,直至遇到这个问题。
nested transactions not supported
检查代码发现是由于在action中,开启一个事务,transaction tr = session,beginTransaction();在tr.commit()之前,又调用了一个方法,而该方法也开启一个事务,执行完毕之后并关闭了该事物,并清空关闭session。由于session 是通过Session session = HibernateSessionFactory.getSession();方法类中的HibernateSessionFactory获取session的,故而此处提交事务关闭session会抛异常。
解决办法是取消HibernateSessionFactory.getsession();的办法,用Configuration configuration=new Configuration().configure();
SessionFactory sessionFactory=configuration.buildSessionFactory();
Session session=sessionFactory.openSession();
Transaction transaction=session.beginTransaction();方法来开启session