首页 > 其他 > 详细

Transaction rolled back because it has been marked as rollback-only

时间:2018-06-14 19:43:03      阅读:300      评论:0      收藏:0      [点我收藏+]

出现这种错误的原因

1.接口A 调用了接口B

2.接口B报异常了,没有在B里面进行try catch捕获

3.接口A对 接口B进行了try catch捕获

因为接口B报异常 会把当前事物A接口的事物(如果B没有开启新的事物) 标志成rollback-only

然后因为接口A对B进行了try catch 所以接口A会一直往下走,等接口结束commit的时候会报错

org.springframework.transaction.UnexpectedRollbackException: Transaction rolled back because it has been marked as rollback-only

因为A的事物 被B标志成rollback-only了

解决办法

1.B接口里面就对异常做try catch处理

2.B接口里面新开一个事物

3.不对接口B进行try catch处理  这样会自动把B的错误抛出来,而不是报上面那个错

一直以为 遇到异常 try catch 不会影响到当前的事物,但是Spring管理的事物,并不是这样。这个问题 是别人跟了半天源码才帮我解决

所以,有时间跟一跟框架的源码 才能更好的理解框架 而不是花大量时间去研究怎么使用框架

Transaction rolled back because it has been marked as rollback-only

原文:https://www.cnblogs.com/ssskkk/p/9184495.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!