回滚事务功能是否仅在抛出异常时才起作用?

时间:2013-10-23 11:32:54

标签: java spring annotations struts

我的声明高于我的班级声明。抛出DAOException时,spring只会回滚吗?

@Transactional(rollbackFor = { ManagerException.class, DAOException.class }) 

如果是这种情况,如何在不抛出异常的情况下回滚错误的提交。目前我的数据库包函数返回一条错误消息,我想回滚并仍然向用户显示错误消息,而不会抛出异常并导致应用程序崩溃。

1 个答案:

答案 0 :(得分:2)

The documentation说:

  

您还可以通过编程方式指示所需的回滚。虽然非常简单,但这个过程非常具有侵入性,并且将您的代码紧密地耦合到Spring Framework的事务基础架构中:

public void resolvePosition() {
    try {
        // some business logic...
    } catch (NoProductInStockException ex) {
        // trigger rollback programmatically
        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
    }
}