一般情况下,如果让spring在service层回滚,就在service层的方法上配置异常回滚的代码,如:
@Transactional(rollbackFor = {Exception.class})
Boolean func1(int param){
//....
}
表示,捕捉到指定异常即回滚。有时代码本身执行时,并不抛出异常,但是不满足业务要求,所以需要手动回滚。
方案有两种:
方案1.需要手动抛出异常,以达到异常触动回滚的效果。
throw new RuntimeException();
方案2.代码手动显式回滚:
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();