首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

spring 事务 不能rollback的有关问题终于解决了

2012-06-29 
spring 事务 不能rollback的问题终于解决了项目中虽然配置了事务,但是总感觉没起作用。尤其是我在测试servi

spring 事务 不能rollback的问题终于解决了

项目中虽然配置了事务,但是总感觉没起作用。

尤其是我在测试service方法时,总是报出一个异常 ?transaction not successfully started .

我开始以为是事务配置的问题,经过反复的检查,发现没错。

?

开始在网上漫无目的的搜索解决方案, 在一片帖子中看到,有人说 使用SessionFactory.getCurrentSession爆出了这个异常,解决办法是改为 SessionFactory.openSession() ,这个倒是给了我灵感。

于是我去检查 hibernateDao(项目中封装的唯一dao),结果发现 session 都是通过 HibernateDaoSupport.getSession() 得到的,而save,update,delete 等是通过get HibernateTemplate() 来实现的,根本没有涉及到 SessionFactory.本来已经放弃这个方法了。一不小心在 save方法中发现了一行代码

this.getSession().beginTransaction().commit(); ?

当时就震惊了,这句话根本就没用嘛,估计以前没配置事务时 自己写着玩的。赶紧把这个注掉,又在 commit()方法中发现了这行代码,注掉。?

?然后运行测试,通过了,事务正常回滚了。

总结一下,在spring使用了声明式事务 ,就不应该在 拦截的 类中 自己维护事务。

?

热点排行