出现这个bug的在做修改功能的时候出现,第一次修改提交后,第二次所有的请求都发不出去,代码获取session用的是open,于是修改为getCurrentSession();之后出现如上错误,百度方法如下:
方法:解决方法是去掉
session.beginTransation();
session.getTransaction().commit();
这样问题就解决了!
可是这样还是会报错,Could not obtain transaction-synchronized Session for current thread 继续百度,如下:
方法:在dao层加上@Transaction注解,再运行ok了
加上注解后再次出现 nested transactions not supported,继续百度,如下
方法:session一直存在,那么,这个session获取的事务,只要有一处完成了开启,那么后期处理的时候,全部都是开启的。无需再次开启。否则就会引起事务嵌套问题而报错。
- 问题的关键在于分清楚,到底谁是目标方法,其它的切面以及advisor的执行时机。
于是删除dao层代码中的所有tx = session.beginTransaction();
项目至此不在出错!不明所以,只知能用