UnexpectedRollbackException: Transaction rolled back because it has been marked as rollback-only解决办法


引发原因:当前类中使用@Transactional注解,当前类中的一个方法内的try catch内调用了来自两个服务类的中的两个方法,

方法1正常运行,但是方法2抛出异常,此时因为当前类中有@Transactional注解,所以方法1也需要回滚,但是两个方法都同在

一个try catch 内,所以也无法回滚,这时抛出异常UnexpectedRollbackException: Transaction rolled back because it has been marked as rollback-only。

解决办法:用另外一个类且有@Transactional注解,将两个方法封装成同一个方法3,此时两个方法在同一个事物中,再调用方法3时,方法内其中一个方法

抛出异常,另一个方法也能够正常回滚。

示意图如下:

 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM