事务不会使用TransactionTemplate回滚

时间:2015-10-23 11:45:11

标签: spring spring-data spring-transactions

我正在尝试使用 TransactionTemplate 处理事务管理。在这段代码中,我故意留下一行代码,以确保在发生异常时事务回滚。但该交易不会回滚。这是代码。

Exception in thread "main" org.springframework.transaction.IllegalTransactionStateException: Transaction is already completed - do not call commit or rollback more than once per transaction

遇到 transactionManager.commit(status)时会显示以下异常。
{{1}}

事务提交成功,但不会回滚异常。可能有什么不对?

==========编辑============

我使用JdbcTemplate引发了异常,它工作得非常好。它成功提交并回滚。

1 个答案:

答案 0 :(得分:2)

您的代码示例中会发生什么:

  • transactionManager.commit(status);导致事务提交
  • doInTransactionWithoutResult()回调中没有引发任何异常,因此TransactionTemplate尝试提交交易
  • 由于事务已经由您的代码提交,因此提交失败,导致IllegalTransactionStateExceptionTransactionTemplate抛出(库代码,而不是您的代码)