为了账号安全,请及时绑定邮箱和手机立即绑定

写了个异常,却事务没有回滚,数据库的表也是InnoDB的,求大神指导。

  

https://img1.sycdn.imooc.com//5b1a4fd20001076804780401.jpg

求大神指导。

正在回答

3 回答

这个是 Spring 框架的锅,因为你抛出的是  Exception,而 Spring 对这个异常是不会进行事务回滚的,如果想要进行事务回滚,可以抛出 Exception 的子类 RuntimeException。

if(true){
    throw new RuntimeException();
}


6 回复 有任何疑惑可以回复我~
#1

慕斯7058562 提问者

谢谢你,解决问题了,可这是为什么呢
2018-06-09 回复 有任何疑惑可以回复我~
#2

JachinYin 回复 慕斯7058562 提问者

这个是 Spring 的设计,它的 @Transactional 注解被指定为只对 RuntimeException 及其子类的异常才会进行事务回滚,至于为什么会这么设计我也不明白。如果说实在是想要让 Spring 能对所有出现的异常都进行回滚的话,可以在尝试在使用 @Transactional 注解时指定回滚的异常类型,写法如下:@Transactional(rollbackFor=Exception.class)
2018-06-09 回复 有任何疑惑可以回复我~
#3

慕斯7058562 提问者 回复 JachinYin

感谢,是这样子的。
2018-06-09 回复 有任何疑惑可以回复我~

https://img1.sycdn.imooc.com//5b1b1ee00001f2fc05350151.jpg

可是,我按视频里的操作完就是inndb的。

0 回复 有任何疑惑可以回复我~

数据库执行下面的语句

alter table girl engine =innodb;


0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
2小时学会Spring Boot
  • 参与学习       151586    人
  • 解答问题       1079    个

Spring Boot入门视频教程,你将学会使用Spring Boot快速构建应用程序

进入课程

写了个异常,却事务没有回滚,数据库的表也是InnoDB的,求大神指导。

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信