我正在尝试使用 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引发了异常,它工作得非常好。它成功提交并回滚。
答案 0 :(得分:2)
您的代码示例中会发生什么:
transactionManager.commit(status);
导致事务提交doInTransactionWithoutResult()
回调中没有引发任何异常,因此TransactionTemplate
尝试提交交易IllegalTransactionStateException
被TransactionTemplate
抛出(库代码,而不是您的代码)