`

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

分享到:
评论

相关推荐

    Spring攻略(第二版 中文高清版).part1

    13.6 管理集成测试中的事务 530 13.6.1 问题 530 13.6.2 解决方案 530 13.6.3 工作原理 531 13.7 在集成测试中访问数据库 536 13.7.1 问题 536 13.7.2 解决方案 536 13.7.3 工作原理 537 13.8 使用...

    Spring攻略(第二版 中文高清版).part2

    13.6 管理集成测试中的事务 530 13.6.1 问题 530 13.6.2 解决方案 530 13.6.3 工作原理 531 13.7 在集成测试中访问数据库 536 13.7.1 问题 536 13.7.2 解决方案 536 13.7.3 工作原理 537 13.8 使用...

    基于springcloud+springboot+nacos+openFeign的分布式事务组件seata项目源码.zip

    如果搭建个人demo不成功,验证是否是由版本导致,版本稍有变化可能出现相关组件的版本不一致便会出现许多奇怪问题 seata服务端 1.3 Nacos服务端 1.1.4 spring-cloud-alibaba-dependencies 2.1.0.RELEASE springboot...

    Spring.html

    readuncommited:读未提交,不可以解决任何问题 readcommited:读已提交,可以解决脏读问题 repeatableRead:可重复读,可以解决脏读,不可重复读问题 Serializbler:串行化,可以解决所有问题 超时时间: 默认-1...

    JTA事务源码示例

    Spring+iBatis+JOTM实现JTA事务: 如何处理跨库事物:spring + jtom 的jta事务是个很好的选择. 这个源码示例非常不错,包括所有的源码和jar包,下载后eclipse 或 myeclipse 导入就能用。 里面有详细的说明和注释,...

    Spring相关测试3

    主要完成了Spring 事务相关测试,包括事务属性(propagation、isolation、rollbackFor、readOnly、timeout),以及事务配置方式(基于注解、基于XML)

    MyBatis 事务管理解析:颠覆你⼼中对事务的理解.pdf

    事务本⾝并不存在什么传播特性,不要混淆事务本⾝和Spring的事务应⽤策略。(当然,找⼯作⾯试时,还是可以巧妙的描述传播 特性的) 2.⼀说到事务,⼈们可能⼜会想起create、begin、commit、rollback、close、...

    Spring活动

    如果事务已成功完成,则使用AFTER_COMMIT(默认值)来触发事件AFTER_ROLLBACK –如果事务已回退AFTER_COMPLETION –如果事务已完成(AFTER_COMMIT和AFTER_ROLLBACK的别名)BEFORE_COMMIT用于在事务提交前立即触发...

    spring实现jdbctemplate添加事务支持示例

    主要介绍了spring实现jdbctemplate添加事务支持示例,重写JdbcTemplate增加beginTranstaion,commit,rollback方法,需要的朋友可以参考下

    JDBC总结——事务

    文章目录事务一、事务的基本介绍1、概念2、操作3、操作实例4、MySQL数据库中默认自动提交二、事务的四大特征三、事务的隔离级别1、概念2、存在的问题3、隔离级别四、Jdbc事务控制1、概述2、控制事务的API:3、核心...

    Step By Step写测试(书签版).pdf

    1.1 一个简单到不能再简单的测试 1.2 在eclipse中运行testng测试 1.3 定义测试组 1.4 生命周期 1.5 在testng中使用jtester 2 断言的使用 2.1 所有对象都支持的断言 2.2 number和string对象支持的断言 2.3 array和...

    COS——R.log

    org.springframework.transaction.UnexpectedRollbackException: Transaction rolled back because it has been marked as rollback-only at org.springframework.transaction.support....

    ibatis 开发指南(pdf)

    “半自动化”的ibatis,却刚好解决了这个问题。 这里的“半自动化”,是相对Hibernate 等提供了全面的数据库封装机制的“全自动化” ORM 实现而言,“全自动”ORM 实现了POJO 和数据库表之间的映射,以及...

Global site tag (gtag.js) - Google Analytics