@Transactional注解的触发,只回滚RuntimeException和Error异常,默认不回滚非RuntimeException异常

解决方法:

1.方法前添加注解(基础的  @Transactional注解:只能拦截RuntimeException和Error异常)

@Transactional(rollbackFor = Exception.class)  //抛出捕获的非RuntimeException异常

2.catch中添加(手动进行回滚)

TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();//手动回滚

3.在catch中手动抛出运行时异常

throw new RuntimeException(e);//(惰性处理,不建议)
      try {//业务代码} catch (Exception e) {throw new RuntimeException(e);}

注意:第一点和第二点 建议一起使用,如果接口本身有封装事务,在不了解原有事务配置的情况下,又没有声明 @Transactional(rollbackFor = Exception.class) 注解,可能导致事务手动回滚失败。

    @RequestMapping("channelAdd")@ResponseBody@Transactional(rollbackFor = Exception.class)public AjaxResult channelAdd( PcChannelVo vo) throws Exception {try {//业务代码} catch (Exception e) {TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();//手动回滚log.error("异常",JsonUtil.toJSON(vo),e);return AjaxResult.error("");}finally {}

如果以上三种方法都没有解决事务不回滚问题:

可以在调用该方法的方法,加@Transactional。在上级方法添加@Transactional,不管调用的方法如何,有报错就会执行回滚。也就不用管是否加了try{}catch{}。

转载:

(232条消息) try{}catch{}中事务不回滚_天狼1222的博客-CSDN博客https://blog.csdn.net/qq_35461948/article/details/122506591

java事务中使用try catch 导致事务不回滚的问题相关推荐

  1. 处理 Seata分布式事务中 没有传递XID 导致事务失效的问题

    问题与解决思路:当业务方法开启全局异常处理器后,TM注册到TC获取到一个XID,此时在业务中,服务远程访问时,此XID会被下面分支业务方法RM接收到,当各个方法处理完成后RM会向TC直接交互把结果通过 ...

  2. tomcat不停机部署_Tomcat中的零停机部署(和回滚); 演练和清单

    tomcat不停机部署 亲爱的大家, 如果您认为Tomcat不能再进步,那您就错了. Tomcat 7引入了所谓的并行部署 . 这是由SpringSource / VMWare贡献的. 简而言之,并行 ...

  3. Tomcat中的零停机部署(和回滚); 演练和清单

    亲爱的大家, 如果您认为Tomcat不能再进步,那您就错了. Tomcat 7引入了所谓的并行部署 . 这是由SpringSource / VMWare贡献的. 简而言之,并行部署是一种能够并行部署一 ...

  4. mysql innodb事务中_MySQL InnoDB如何保证事务特性示例详解

    前言 如果有人问你"数据库事务有哪些特性"?你可能会很快回答出原子性.一致性.隔离性.持久性即ACID特性.那么你知道InnoDB如何保证这些事务特性的吗?如果知道的话这篇文章就可 ...

  5. mysql事务中怎么更改空值_MySQL事务

    1.事务 1.事务特性--ACID Atomicity(原子性):要么全做,要么不做,不能只做一半(银行转账) Consistency(约束性):事务的前后,约束都能满足 Isolation(依赖性) ...

  6. REPEATABLE-READ隔离级别 事务中无法读到其它事务提交了的最新数据

    前言: 业务要求一个简单的并发控制,使得一条数据只被确认一次,我的方案是 悲观锁,就是在事务中先对数据行加锁(MySQL InnoDB 行锁基于索引),判断是否已经确认过,未确认的情况下确认,已确认则 ...

  7. Spring 事务方法与非事务方法相互调用 @Transactional 注解失效不回滚?

    写这篇文章的初衷呢就是最近遇到了一个Spring事务的大坑.与其说是坑,还不如说是自己事务这块儿太薄弱导致的(自嘲下). 项目环境 Spring Boot 下面开始问题描述,发生的过程有点长,想直接看 ...

  8. PHP 如何在Redis中实现事物(事物提交和事物回滚)

    讲了这么多Redis的使用,今天我们来讲下Redis的事物 1.首先,我们来看一下Redis中事物相关的指令, 命令原型       命令描述 MULTI   用于标记事务的开始,其后执行的命令都将被 ...

  9. mysql数据库回滚日志_超干货!为了让你彻底弄懂 MySQL 事务日志,我通宵搞出了这份图解...

    作者 | Amazing10 责编 | 屠敏 本文为业余码农投稿,已获授权 还记得刚上研究生的时候,导师常挂在嘴边的一句话,"科研的基础不过就是数据而已."如今看来,无论是人文社科 ...

最新文章

  1. mysql 常用命令 | 表间 弱关联 join
  2. java session 是什么意思_Java:Session详解
  3. 多线程讲座【by lilei005】
  4. ssis lookup_SSIS中的LOOKUP转换概述
  5. 前端js如何生成一个对象,并转化为json字符串
  6. My BlackBerry
  7. android社交软件源码,Android 社交App+java web后台整套源代码
  8. 企业管理系统可视化权限功能设计
  9. 将表中一整列数据都生成五笔和拼音
  10. scp 传目录_目录传输命令scp
  11. 手机管理应用研究【4】—— 手机加速篇
  12. tdd干扰波形_TDDLTE干扰排查指导书_V1520170219.docx
  13. 微信 iPad 835协议
  14. 计算机网络中地址数怎么算,【计算机网络技术】根据IP地址子网掩码计算网络地址、直接广播地址、主机号以及可用IP地址的范围...
  15. python tushare获取股票数据_python调用tushare获取沪股通、深股通成份股数据
  16. 【Unity Shader学习笔记】(五)使用鼠标绘制自由多边形(附完整工程源码)
  17. python 实战之模仿开发QQ聊天软件(二)MySQL数据库的连接和使用
  18. 孙陶然:协同是现场最高级别干部的责任
  19. std:weak_ptr
  20. SAP PM模块配置大全

热门文章

  1. 对接饿了么开放平台(Java)
  2. 202303-第四周-山川软件产品资讯
  3. Mac上替代Visio的绘图软件—EdrawMax(亿图图示)
  4. 2016年该如何理财
  5. CentOS7安装gradle
  6. pyqt5画直线(UI界面)----计算机图形学
  7. php将数组顺序打乱,php数组打乱顺序
  8. 京东二面扑街咯,全力以赴, 三月之期已到,这次终于拿下offer!
  9. IT男,难道真的都是这样的?
  10. 骁龙8gen1和麒麟9000哪个好