@Transactional注解事务不回滚不起作用无效

文章转自:https://blog.csdn.net/u011410529/article/details/54287307

@Transactional注解事务

什么情况下生效:

在此,我们先了解一下检查性异常和非检查性异常的定义和区别:

1、所有的检查性异常都继承自java.lang.Exception;所有的非检查性异常都继承自java.lang.RuntimeEx ception。

2、检查性异常和非检查性异常最主要的区别在于其处理异常的方式:检查性异常必须使用try catch或者throws等关键字进行处理,否则编译器会报错;非检查性异常一般是程序代码写的不够严谨而导致的问题,可以通过修改代码来规避。

3、常见的运行时异常:空指针异常(NullPointerException)、除零异常(ArithmeticException)、数组越界异常(ArrayIndexOutOfBoundsException)等;

常见的检查性异常:输入输出异常(IOException)、文件不存在异常(FileNotFoundException)、SQL语句异常(SQLException)等。

 

@Transactional注解只对public生效,private、protected等是没有效果的,运行中也不会报错。

@Transactional只有对非检查性异常才会生效事务回滚,对检查性异常是不会的。

以下非检查异常抛出前保存了,但是由于是非检查异常,事务回滚喔。

以下检查异常抛出前保存了,事务就不回滚喔。

解决方法;

1、检查你方法是不是public的

2、你的异常类型是不是unchecked异常 
如果我想check异常也想回滚怎么办,注解上面写明异常类型即可

@Transactional(rollbackFor=Exception.class) 

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值