码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2018-06-14 20:47:47      阅读:189      评论:0      收藏:0      [点我收藏+]

标签:str   影响   出现   ack   col   调用   nsa   一个   框架   

出现这种错误的原因

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

标签:str   影响   出现   ack   col   调用   nsa   一个   框架   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!