当使用事务注解管理事务的时候,A方法调用B方法 A方法执行抛异常时如果被try catch捕获spring会进行回滚标记,继续向下执行,当执行B结束后,在回到A进行spring自动提交的时候,因为A方法报错的地方已经被标记为只能回滚,所以在事务自动提交的时候会报错,org.springframework.transaction.UnexpectedRollbackException: Transaction rolled back because it has been marked as rollback-only 解决办法,如果非要写try catch捕获的话 在catch块中加入 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly() 可以手动先行回滚,就可以避免自动提交时候,被标记异常所报错的问题。
网友评论