try catch 与 事物回滚@Transactional

版权声明:本文为博主原创烂文章,你爱转载就转载 https://blog.csdn.net/qq_38623459/article/details/80318503

问题:正如他所说(都加上了@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());在不带事物的里面,不可以回滚,这样就能执行它了


阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页