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