@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)什么时候提交? - 跟进

时间:2013-03-27 18:02:09

标签: hibernate java-ee jboss hsqldb container-managed

查看此链接: When does @TransactionAttribute(TransactionAttributeType.REQUIRES_NEW) commit?

B如何才能成为正确答案?我认为用REQUIRES_NEW注释的方法会在外部暂停事务之前继续提交。

我在问这个问题是因为在for-loop中从另一个bean开始使用requires_new进行的事务时,我看到了奇怪的行为。就像Aby在for循环中调用bob一样。如果由于例如UniqueConstraintViolation而回滚其中一个事务,则HSQLDB和db2会间歇性地回滚先前的事务,并且间歇性地仅回滚事务,并提交其他事务。当我重新启动jboss时,行为只会改变。当事务失败并且我得到上一个事务回滚的行为时,我也得到一个jdbcException:在循环的下一次调用中Connection被关闭。 所以,首先我想知道requires_new的预期行为。我正在使用Hibernate,jboss 5,CMT,db2和内存中的HSQLDB(我已经尝试了1.8版和2.2.9版) 谢谢!

1 个答案:

答案 0 :(得分:4)

所以我发现这就是造成这种奇怪行为的原因

jboss ignores requires_new after restart

在链接中:

When does @TransactionAttribute(TransactionAttributeType.REQUIRES_NEW) commit?

备选方案a是正确答案,因此该帖子中的答案是错误的。