首页 > 其他分享 >service层设置手动事务回滚,原因@Transactional事务与try{}catch(){}会失效,导事务不回滚

service层设置手动事务回滚,原因@Transactional事务与try{}catch(){}会失效,导事务不回滚

时间:2024-03-15 22:24:17浏览次数:20  
标签:事务 service Transactional 手动 回滚 报错

 

1、原因是这样的,在service层的方法中,需要执行多条update或insert的数据操作,service的方法上是加@Transactional(rollbackFor = Exception.class)注解,然后方法体中又用了try{}catch(){}操作,导致在update多个执行时,其中有一条sql报错,本应该执行事务回滚操作报错前的update都不应该生效,但一看数据库表,已经生效了。

这就导致回滚是无效的。

 

那么我们就直接使用手动回滚好了,在执行数据表操作后面加上,手动事务回滚代码(亲测有效)

TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();

 

示例,如图:

去掉方法上@Transactional(rollbackFor = Exception.class) 注解,使用手动事务回滚

批量执行sql时,其中一条报错,所有事务回滚,报错前执行的事务也将无效。

 

 

 

 

 

 

 

 

 

 

 

 

标签:事务,service,Transactional,手动,回滚,报错
From: https://www.cnblogs.com/spll/p/18076373

相关文章

  • MySQL的四个事务隔离级别有哪些?各自存在哪些问题?
    前言大家应该都知道mysql的事务有四个隔离级别,但是他们分别是什么隔离级别并且会带来什么问题呢?接下来我为大家一一揭晓,通过图解的方式方便大家理解。一、读未提交(ReadUncommitted)1、这个是隔离级别最低的。2、顾名思义,可以看出来就是一个事务可以读取另外一个未提交事务......
  • MogDB-openGauss事务处理语句
    MogDB/openGauss事务处理语句事务是由一组SQL语句序列构成的原子操作集合,它具有原子性、一致性、隔离性和持久性的特点。用户在开始执行一个SQL语句时,实际上就已经开始了一个隐式的事务,而SQL语句执行结束,隐式的事务也会根据SQL语句的执行成功与否分別进行提交(Commit)......
  • MogDB openGauss如何实现事务的rollback
    MogDB/openGauss如何实现事务的rollback本文出处:https://www.modb.pro/db/113262数据库最主要的功能就是存储数据,然而我们在进行数据库操作时,却很容易发生误操作数据的情况,那么在MogDB中该如何实现误操作数据恢复呢?本文通过具体示例简要介绍如何通过回滚还原到误操作前的状......
  • 猫头虎分享已解决Bug || 服务版本冲突(Service Version Conflict):VersionMismatchError,
    博主猫头虎的技术世界......
  • 事务
    一、用法和groupby一起使用,分组后再进行条件过滤就用到having了。GROUPBY分组字段名HAVING分组后过滤条件二、和WHERE的区别1where是分组之前进行过滤,不满足where条件的数据不参与分组,而having是分组之后对分组结果进行过滤。2.where不能对聚合函数进行判断,having可......
  • 分布式事务Seata中的XA和AT区别,通俗易懂!
    首先得知道二个概念:1、CAP理论CAP是指在分布式系统下,系统包含C、A、P三个要素,并且三者不可兼得。C: 一致性:同一个数据在同一时刻是相同的A: 可用性:即系统出错误,但在一定时间范围内仍能够正确的响应用户请求P: 分区容错性:即某节点或网络分区故障时,系统仍能够提供......
  • gorm使用事务并发情况下切有最大mysql连接数限制的情况下的BUG,踩坑了
    现象服务器pprof中的goroutines很多,无法释放,肯定是异常.代码//收到请求上个赛季个人秘境赛季排行func(this*MsgProc)MsgProc_PersonSecretLastRankReq(msg*protoMsg.PersonSecretLastRankReq){ global.GetSrvInst().GetThreadGo().Go(func(ctxcontext.Context)......
  • InnoDB是事务型数据库的首选引擎
    支持事务安全表(ACID),支持行锁定和外键;MySQL事务的ACID特性是确保数据准确性和可靠性的基本原则,包括**原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)**。具体如下:1.**原子性(Atomicity)**:原子性指的是事务作为最小的执行单位,其包含的操作要么全部......
  • Seata:实现分布式事务的利器
    Seata:实现分布式事务的利器Seata是一种开源的分布式事务解决方案,旨在解决分布式系统中的事务一致性问题。本文将介绍Seata的概念和原理,探讨其在分布式应用程序中的应用场景,并讨论其对于构建可靠的分布式系统的重要性。Seata的概念和原理分布式事务:在分布式系统中,事务的执......
  • linux:services服务器配置
    1.环境准备。配置selinux和防火墙vim/etc/selinux/configSELINUX=permissiveyum-yremovefirewalldip地址基础[root@server~]#ipaddressshow[root@server~]#ipas临时添加IP地址[root@server~]#ipaddressadd192.168.10.1/24deveth......