问题:正如他所说(都加上了@transaction)
1.如果try中的代码出错了,却无法回滚
try { ....... cccservice.save(); aaaService.save(); }catch(RuntimeException e) { logger.info();
}这时候,事物不会回滚,因为它需要throw异常,才能继续回滚。
2.想回滚cccservice.save(); aaaService.save(); 但是bbbService.save(e.getMessage());不想回滚
try { ....... cccservice.save(); aaaService.save(); }catch(RuntimeException e) { bbbService.save(e.getMessage()); throw new RuntimeException(e.getMessage());}这个时候throw错误,事物回滚,所有的db操作都被回滚,我们想出的办法是,将try的内容提出来在带事物的里面,出错回滚,而bbbService.save(e.getMessage());在不带事物的里面,不可以回滚,这样就能执行它了
本文探讨了在使用@transaction注解时如何确保部分代码能够避免事务回滚的问题。具体讨论了在遇到异常时如何通过调整try-catch块内的逻辑来实现特定代码的执行而不受事务回滚的影响。

7872

被折叠的 条评论
为什么被折叠?



