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

article/2025/10/3 2:51:52

@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博客icon-default.png?t=MBR7https://blog.csdn.net/qq_35461948/article/details/122506591


http://chatgpt.dhexx.cn/article/jPI7kOiI.shtml

相关文章

java中事务

1.开启事务 事务的四大特性 ACID是原子性(atomicity)、一致性(consistency)、隔离性 (isolation)和持久性(durability)的缩写。 事务的原子性:事务作为整体执行&#x…

Java事务的ACID属性和四种隔离级别和传播机制

事务的ACID属性 数据库管理系统中事务(transaction)的四个特性(分析时根据首字母缩写依次解释):原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性&a…

java回滚失败_java事务回滚失败问题分析

Spring-Java事物回滚失效处理最近在做项目中,无意间发现有个类在抛事物回滚操作,数据也正常的插入到数据库当中了,于是仔细查看看一下具体原因。 一切还是要从Java的检查型异常和非检查型异常说起。 那么什么是检查型异常什么又是非检查型异常呢? 最简单的判断点有两个: 1…

java中事务特性_java事务的四大特性ACID

前言 对于要把事务在实际中使用好,需要了解事务的特性。 事务的四大特性主要是:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。 一、事务的四大特性 1.1原子性(Atomicity) 原子性是指事务是一个不可分割的工作单位&a…

Java 事务的传播性(Transactional)

前言 事务的传播性是Spring特有的概念,是基于Spring AOP技术实现的,原本的方法不具备事务的功能,运用Spring AOP的方式动态的增加了事务的功能,来确保数据库的数据的一致性。 只要开启事务的方法发生调用关系就一定存在事务的传…

Java 事务应用

一, 事务的一些基础知识简单回顾一下,讲的不是很深入,网上博客很多。 1,关于事务的四大特性:原子性、隔离性、一致性、持久性 本文不再赘述; 2,事务的隔离级别:读未提交,…

Java事务管理

事务的ACID属性:原子性(Atomicity )、一致性( Consistency )、隔离性或独立性( Isolation)和持久性(Durabilily) ACID 特性 A(原子性)事务的原子操作单元,对数据的修改,要么全部执行,要么全部不执行&#x…

java 事务级别_java事务隔离级别

事务隔离级别是由数据库系统实现的。 Java事务 1) 说到事务,不得不提的就是ACID特性,再次回顾: 原子性(atomicity):组成事务处理的语句形成了一个逻辑单元,不能只执行其中的一部分。 一致性(consistency)&#xff1a…

Java中使用事务(注解实现)

Java中使用事务(注解实现) 事务的介绍 描述: 对于一个功能实现或者业务流程,要么全做,要么全不做! 特性: ACID A - 原子性:执行的最小单位,要么全做,要么全…

JAVA的事务

要先知道什么是java中的事务? 事务: 一般是指要做的或所做的事情.专业术语是这样说的: 就是代码逻辑上的一组操作,这些操作要么全部成功,要么全部失败!举一个现实生活当中的例子: 1张三账上有2000元,李四账号也有2000元。张三要向李四转账1000元,正常来…

Java中的事务

一、事务概述 1. 什么是事务 事务是指对数据库的一系列的操作序列,数据库应用系统通过事务集来完成对数据的存取操作。 2. 事务的特性(ACID原则) 原子性(Atomicity):一个事务的操作不可分割&#xff0c…

java事务总述

文章目录 一、java事务概述1.1、java事务简述1.2、Java事务的类型1.3、java事务的特性1.4、java事务的隔离级别1.5、spring事务的传播特性1.6、spring支持的事务管理类型 二、java事物使用2.1、XML配置2.2、事务使用方式 一、java事务概述 1.1、java事务简述 1、简介 事务(TR…

Java中的事务及使用

什么是事务? 事务(Transaction),一般是指要做的或所做的事情。在计算机术语中是指访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。事务通常由高级数据库操纵语言或编程语言(如SQL,C或Java&am…

测试用例设计方法---等价类划分法

1 等价类划分法 1.1 定义 是把所有可能输入的数据,即程序的输入域划分策划国内若干部分(子集),然后从每一个子集中选取少数具有代表性的数据作为测试用例。方法是一种重要的、常用的黑盒测试用例设计方法。 1.1划分等价类 1&a…

02测试用例设计方法-等价类划分

等价类划分法 1)定义 是把所有可能的输入数据,即程序的输入域划分成若干部分(子集),然后从每一个子集中选取少数具有代表性的数据作为测试用例。该方法是一种重要的,常用的黑盒测试用例设计方法。使用这一方法时,完全不考虑程序的…

等价类划分用例案例设计

一、加法案例 测试要求:计算1到100的两个整数之和(包括1和100) 提示:一般是一个框输入正确的值,一个框输入错误的值,没有两个框都输入错误的值,因为更容易确定到底是哪个框出现错误的值&#x…

常见测试用例设计方法1---等价类划分

目录 一,等价类划分概念: 二,有效等价类和无效等价类: 三,划分等价类的标准 四,设计测试用例 五,以QQ密码设定规则为例使用等价类划分编写测试用例 1,分析需求,确定输…

黑盒测试方法|测试用例的设计方法--等价类划分方法

黑盒测试方法–测试用例的设计方法–等价类划分方法 目录 等价类划分方法边界值分析方法错误推测方法因果图方法判定表驱动分析方法正交实验设计方法功能图分析方法场景设计方法 等价类划分方法 一、方法简介 (1)定义 把所有可能的输入数据,即程序的…

软件测试:等价类划分举例

等价类的设计思路: 根据输入条件,确定等价类,包括有效等价类和无效等价类,建立等价类列表为每个等价类规定一个唯一的编号设计一个测试用例,使其尽可能多地覆盖尚未被覆盖的有效等价类,重复这一步&#xff…

等价类划分法-案例剖析-设计测试用例

目录 等价类划分法概念 有效等价类和无效等价类 等价类设计测试用例步骤 案例1 案例2 案例3 等价类划分法概念 等价类划分法是把所有可能的输入数据,即程序的输入数据集合划分成若干个子集即等价类,然后从每个等价类中选取少量具有代表性的数据作为…