0

在我的方法中,@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)有时会发生org.eclipse.persistence.exceptions.DatabaseException由于SQLException. 我捕捉到这个异常并通过另一个数据库查询来处理这种情况。但是,此查询未通过,因为由于异常, setRollbackOnly 已自动设置,此时我无法再提交事务。

在 Java SE 中,我会做一个明确的

manager.getTransaction().rollback();
manager.getTransaction().begin();

但是在应用程序服务器中,这当然是行不通的。

在这种情况下,我能否以某种方式让我的数据库更改提交?

4

2 回答 2

1

esej 的评论中给出的提示是解决方案:“在另一个带有 REQUIRES_NEW 注释的 bean 上调用方法。”

谢谢

于 2012-08-30T14:01:26.273 回答
0

当您尝试启动新的全局事务而前一个事务既未提交也未回滚时,您将出现“调用例程等”错误。

为了解决这个问题,您应该执行以下操作:

当您捕获第一个异常时,不要将其留给容器将事务标记为“回滚”。您必须手动将事务标记为回滚。

于 2012-08-30T14:10:52.770 回答