我的类声明上方有这个声明。春天只会在抛出DAOException时回滚吗?
@Transactional(rollbackFor = { ManagerException.class, DAOException.class })
如果是这种情况,我怎样才能在不引发异常的情况下回滚错误的提交。目前,我的数据库包函数返回错误消息,我想回滚并仍然向用户显示错误消息,而不会引发异常并使应用程序崩溃。
文档说:
还可以以编程方式指示所需的回滚。虽然非常简单,但这个过程是相当侵入性的,并且将您的代码与 Spring 框架的事务基础架构紧密耦合:
public void resolvePosition() {
try {
// some business logic...
} catch (NoProductInStockException ex) {
// trigger rollback programmatically
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
}
}