项目中的事务,我们一般都是使用注解式事务,在service层加上@Transactional,或者加在具体方法上。
但有的时候我们需要手动回滚事务,如以下两种情况:
1) try..catch到异常之后需要回滚事务。如阿里巴巴开发手册中就提到:
【强制】有 try 块放到了事务代码中,catch 异常后,如果需要回滚事务,一定要注意手动回 滚事务。
2)一些业务异常,如:
根据id没有查询到数据、由于乐观锁更新失败等(当然可以抛出自定义异常)
手动回滚代码:
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();