@Transactional报错时需要抛出异常被注解自带的异常处理捕获才能够自动回滚,但在为了尽量能够回复响应,我们都会自己捕获异常,如果我们捕获了异常就不能自动回滚,这个时候我们就需要开启手动回滚
//第一步,在注解加强rollbackFor
@Transactional(rollbackFor=Exception.class)
//第二步,在我们自己的异常处理中手动回滚
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
try{
}catch(Exception e){
e.printStackTrace();
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
}
有一篇文章讲@Transactional失效非常详细,有兴趣可以看一看链接