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使用了声明式事务 ,就不应该在 拦截的 类中 自己维护事务。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值