【发布时间】:2016-06-07 08:23:36
【问题描述】:
我们有一个 Hibernate Interceptor 正在拦截 afterTransactionCommit 并检查 wasCommited() 的事务,但我们最近升级到 Hibernate 5.0.7.Final,并且 hibernate 5 不再有这个调用,当我们调用 @ 987654323@ 函数我们似乎只得到ACTIVE 或NOT_ACTIVE 而不管事务状态如何。
我查看了afterTransactionBegin,交易标记为ACTIVE,这是预期的,在beforeTransactionCompletion 中仍标记为ACTIVE,这又是预期的,但随后在afterTransactionCommit 中标记为NOT_ACTIVE,这对我来说没有意义。我会期待COMMITTED, ROLLED_BACK, FAILED_COMMIT 之一。无论事务状态如何,我都会得到这个,即使我抛出一个导致回滚的异常,我仍然看不到NOT_ACTIVE以外的任何状态。
我们查找此信息的原因是确定我们是否需要将一些消息发布到队列中。基本上,如果未提交交易,请不要发布。截至目前,使用 Hibernate 5,我似乎无法找出如何以编程方式确定事务是否成功。
【问题讨论】:
标签: java spring hibernate jpa transactions