当我们在java的service中想要保持事务的时候只需要使用注解@Transactional即可保证事务的一致性,但是如果是我们使用try catch呢?这时候由于异常被捕获,并不会抛出引发执行事务,那怎么办呢?
其实很简单,只需要在执行的时候在catch语句内部加上一行
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
就能够让事务回滚了
完整的demo大概是
try{
}
catch (Exception e) {
logger.error("error:{}",e.getMessage());
//设置手动回滚
TransactionAspectSupport.currentTransactionStatus()
.setRollbackOnly()
}