在服务层的方法上添加事务注解,如下:
注解代码:@Transactional
以上事务注解默认 是对 RuntimeException()
异常进行回滚,
但是如果我们在方法中使用了try {} catch
则默认的回滚就失效了
解决使用 try{}catch 回滚失效的事件
第一种方法:在catch中抛出 RuntimeException()
异常
try{
....
}catch(Exception e){
logger.error("",e);
//抛出 RuntimeException 异常,让事务进行回滚
throw new RuntimeException;
}
第二种方法 使用 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
如下:
try{
....
}catch(Exception e){
logger.error("",e);
e.printStackTrace();
sponseVo.setResult("error");
//返回错误信息提示内容
sponseVo.setErrorMsg(vo1.getMessage());
//这里是因为我项目里面有一项不支持事务所以需要写删除方法
deleteMx(vo1);
//让事务进行回滚
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
}