社区
Java EE
帖子详情
spring事务管理使用@transcational(noRollbackFor=Exception.class)注解无法取消事务回滚
xdy_cup
2018-01-11 10:19:44
按照spring的默认方式应该是对runtimeException的异常回滚,但是无论我使用noRollbackFor=Exception.class还是noRollbackFor=RuntimeException.class都不能取消事务回滚,请问这是什么原因呢?
...全文
1143
7
打赏
收藏
spring事务管理使用@transcational(noRollbackFor=Exception.class)注解无法取消事务回滚
按照spring的默认方式应该是对runtimeException的异常回滚,但是无论我使用noRollbackFor=Exception.class还是noRollbackFor=RuntimeException.class都不能取消事务回滚,请问这是什么原因呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
sk815
2018-12-04
打赏
举报
回复
@Test 所有数据库变动都会回滚····
huan_1993
2018-12-03
打赏
举报
回复
noRollbackFor 表示遇到这些异常不会回滚,如果需要回滚,使用 rollbackFor
皮卡丘_后盾
2018-12-03
打赏
举报
回复
数据库用的什么引擎,MyISAM是不支持事务的
简单风
2018-12-03
打赏
举报
回复
看你的class,你的aop代理机制是什么?如果是默认的,代理是基于接口的代理,你这个类没有继承接口,事务注解根本不会起作用
快叫我java小菜鸟
2018-01-11
打赏
举报
回复
首先确保你的注解起作用了,其次你事务开在了dao里面,看看调用该方法的地方是否开启了事务,存在事务的传播机制混乱的问题
xdy_cup
2018-01-11
打赏
举报
回复
@ #2 没有什么用,按照正常情况确实是像你说的那样,但是我就算捕获了异常,回滚还是执行了,我只有去掉@transactional 或者@Rollback(value=false)才能取消回滚
柯南在写代码
2018-01-11
打赏
举报
回复
你这个原因我不太了解,想让事务不回滚还有一个方法,就是在数据库交互的地方,用一个try catch捕获异常,这样的话,事务就会照常提交了.
Spring
Boot @
Trans
act
ion
al
(
rollback
For =
Except
ion
.
class
)回滚失效分析
1.场景介绍 1.
Spring
Boot中业务层方法中
使用
了try
cat
ch 导致@
Trans
act
ion
al
(
rollback
For =
Except
ion
.
class
)
注解
失效 2.操作演示 1.首先我们根据当前代码进行运行查看出现异常的时候时候会进行回滚 此时我们可以看到代码运行47行(第二个修改)时出现了异常,而我们已经添加了 @
Trans
act
ion
al
(
rollback
For =
Except
ion
.
class
)
注解
正常清空下会发生回滚也就是数据库值不变 但此时我们来观察数据库会发现
Spring
中的@
Trans
act
ion
al
(
rollback
For =
Except
ion
.
class
)属性详解
Spring
中的@
Trans
act
ion
al
(
rollback
For =
Except
ion
.
class
)属性详解 序言 今天我在写代码的时候,看到了。一个
注解
@
Trans
act
ion
al
(
rollback
For =
Except
ion
.
class
),今天就和大家分享一下,这个
注解
的用法; 异常 如下图所示,我们都知道
Except
ion
分为运行时异常Runtime
Except
ion
和非运行时异常 error是一定会回滚的 如果不对运行时异常进行处理,那么出现运行时异常之后,要么是线程中止,要么是主程序终
spring
的
事务回滚
@
Trans
act
ion
al
(
rollback
For =
Except
ion
.
class
)
当开发的时候遇到数据库的增删改的时候,需要添加事务,保证数据的一致性,如果不加事务就会造成一部分完成了,另外地一部分没有完成,造成数据不一致。
spring
提供了@
Trans
act
ion
al
,可以指定事务,当操作发生异常的时候,会回滚的这个方法里对数据库的操作,默认的是Runtime
Except
ion
的时候会回滚,我们可以指定当遇到特定异常的时候回滚,可以通过@
Trans
act
ion
al
(
rollback
For=
Except
ion
.
class
)来指定,当发生异常的时候会回滚,我们也可以混成我们自定义的异常..
事务回滚
---@
Trans
act
ion
al
(
rollback
For =
Except
ion
.
class
)
前几天有个老哥面试遇到了"怎样配置才能让他只在数据库操作失败得时候进行回滚,其他情况不回滚"这个问题,这个问题的解决方案很简单,以前在
spring
项目中我们
使用
事务都是
使用
Trans
act
ion
al
这个
注解
,而其中有一个属性
rollback
For ,这个就是需要回滚的情况,一般情况下我们都
使用
@
Trans
act
ion
al
(
rollback
For =
Except
ion
.
class
) 这个
注解
是让我们在方法中遇到异常就回滚,而其他情况会滚我们只需要改变
Except
ion
.
class
比如我们想要只有遇到数据库
Spring
中@
Trans
act
ion
al
(
rollback
For =
Except
ion
.
class
) 事物回滚
@
Trans
act
ion
al
(
rollback
For =
Except
ion
.
class
)//事物回滚 public JsonResult addLike(Integer userId, List<Integer> ids) { userBusinessLikeMapper.delLike(userId); userBusinessLi...
Java EE
67,512
社区成员
225,881
社区内容
发帖
与我相关
我的任务
Java EE
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
复制链接
扫一扫
分享
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章