java事务中使用try catch 导致事务不回滚的问题
@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 导致事务不回滚的问题相关推荐
- 处理 Seata分布式事务中 没有传递XID 导致事务失效的问题
问题与解决思路:当业务方法开启全局异常处理器后,TM注册到TC获取到一个XID,此时在业务中,服务远程访问时,此XID会被下面分支业务方法RM接收到,当各个方法处理完成后RM会向TC直接交互把结果通过 ...
- tomcat不停机部署_Tomcat中的零停机部署(和回滚); 演练和清单
tomcat不停机部署 亲爱的大家, 如果您认为Tomcat不能再进步,那您就错了. Tomcat 7引入了所谓的并行部署 . 这是由SpringSource / VMWare贡献的. 简而言之,并行 ...
- Tomcat中的零停机部署(和回滚); 演练和清单
亲爱的大家, 如果您认为Tomcat不能再进步,那您就错了. Tomcat 7引入了所谓的并行部署 . 这是由SpringSource / VMWare贡献的. 简而言之,并行部署是一种能够并行部署一 ...
- mysql innodb事务中_MySQL InnoDB如何保证事务特性示例详解
前言 如果有人问你"数据库事务有哪些特性"?你可能会很快回答出原子性.一致性.隔离性.持久性即ACID特性.那么你知道InnoDB如何保证这些事务特性的吗?如果知道的话这篇文章就可 ...
- mysql事务中怎么更改空值_MySQL事务
1.事务 1.事务特性--ACID Atomicity(原子性):要么全做,要么不做,不能只做一半(银行转账) Consistency(约束性):事务的前后,约束都能满足 Isolation(依赖性) ...
- REPEATABLE-READ隔离级别 事务中无法读到其它事务提交了的最新数据
前言: 业务要求一个简单的并发控制,使得一条数据只被确认一次,我的方案是 悲观锁,就是在事务中先对数据行加锁(MySQL InnoDB 行锁基于索引),判断是否已经确认过,未确认的情况下确认,已确认则 ...
- Spring 事务方法与非事务方法相互调用 @Transactional 注解失效不回滚?
写这篇文章的初衷呢就是最近遇到了一个Spring事务的大坑.与其说是坑,还不如说是自己事务这块儿太薄弱导致的(自嘲下). 项目环境 Spring Boot 下面开始问题描述,发生的过程有点长,想直接看 ...
- PHP 如何在Redis中实现事物(事物提交和事物回滚)
讲了这么多Redis的使用,今天我们来讲下Redis的事物 1.首先,我们来看一下Redis中事物相关的指令, 命令原型 命令描述 MULTI 用于标记事务的开始,其后执行的命令都将被 ...
- mysql数据库回滚日志_超干货!为了让你彻底弄懂 MySQL 事务日志,我通宵搞出了这份图解...
作者 | Amazing10 责编 | 屠敏 本文为业余码农投稿,已获授权 还记得刚上研究生的时候,导师常挂在嘴边的一句话,"科研的基础不过就是数据而已."如今看来,无论是人文社科 ...
最新文章
- mysql 常用命令 | 表间 弱关联 join
- java session 是什么意思_Java:Session详解
- 多线程讲座【by lilei005】
- ssis lookup_SSIS中的LOOKUP转换概述
- 前端js如何生成一个对象,并转化为json字符串
- My BlackBerry
- android社交软件源码,Android 社交App+java web后台整套源代码
- 企业管理系统可视化权限功能设计
- 将表中一整列数据都生成五笔和拼音
- scp 传目录_目录传输命令scp
- 手机管理应用研究【4】—— 手机加速篇
- tdd干扰波形_TDDLTE干扰排查指导书_V1520170219.docx
- 微信 iPad 835协议
- 计算机网络中地址数怎么算,【计算机网络技术】根据IP地址子网掩码计算网络地址、直接广播地址、主机号以及可用IP地址的范围...
- python tushare获取股票数据_python调用tushare获取沪股通、深股通成份股数据
- 【Unity Shader学习笔记】(五)使用鼠标绘制自由多边形(附完整工程源码)
- python 实战之模仿开发QQ聊天软件(二)MySQL数据库的连接和使用
- 孙陶然:协同是现场最高级别干部的责任
- std:weak_ptr
- SAP PM模块配置大全