当前位置: 代码迷 >> 综合 >> try catch 与 事物回滚@Transactional
  详细解决方案

try catch 与 事物回滚@Transactional

热度:8   发布时间:2023-12-24 05:26:07.0

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


  相关解决方案