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时,方法内其中一个方法
抛出异常,另一个方法也能够正常回滚。
示意图如下: