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());在不带事物的里面,不可以回滚,这样就能执行它了


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

私密
私密原因:
请选择设置私密原因
  • 广告
  • 抄袭
  • 版权
  • 政治
  • 色情
  • 无意义
  • 其他
其他原因:
120
出错啦
系统繁忙,请稍后再试