1.鸡肋式回滚
TransactionAspectSupport.currentTransactionStatus().setRollbackonly() //只能在回滚时添加一些自己的逻辑,无法再次插入、更新、删除任何数据库的记录(即便代码顺序在setRollbackOnly之后,都会被回滚);
2.设置部分回滚则可以再次尝试插入、更新、删除,甚至重复回滚前的操作都可以成功
Object savePoint = null;
try {
savePoint = TransactionAspectSupport.currentTransactionStatus().createSavepoint();
}catch (Exception e){ TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint);
}
3.全面替代@Tranactional,代之以注入DataSourceTransactionManager和TransactionDefinition,也能再次插入、更新、删除
@Autowired DataSourceTransactionManager dataSourceTransactionManager; @Autowired TransactionDefinition transactionDefinition;
TransactionStatus transactionStatus = dataSourceTransactionManager.getTransaction(transactionDefinition);
手动提交事务
dataSourceTransactionManager.commit(transactionStatus);//提交
手动回滚事务
dataSourceTransactionManager.rollback(transactionStatus);//回滚



