0

我有一种情况,我们更新实体数据,然后根据某些类型的更新,我们也可能更新另一个实体。

在某些情况下,第二个条目中的更新可能由于某些原因而失败并引发异常。

问题是如何处理这种情况,因为我们想回滚在第一个实体中所做的更改。

我们不能将更新推迟到第一个条目,直到第二个条目更新。

在目前的情况下,如果发生这种情况

一旦代码到达下面的块,即使第二次实体更新失败,它也会提交第一个条目更改。那么如何回滚呢?如果第二个实体更新失败,我认为不关闭persistentManager 不是正确的选择。

finally {
            try {
                if (pm != null && pm.isClosed() == false )
                    pm.close();
            } catch (Exception e) {
                log.severe("Exception in finally of execute of updateDonor");
                log.severe("Exception class is :" + e.getClass().getName());
                log.severe("Exception is :" + e.getMessage());
                throw new Exception(e.getMessage()
                        + "Unable to close persistence manager");
            }
            log.info("end of updateDonor");
        }
4

1 回答 1

1

我不确定我是否完全了解您的情况,但跨组(XG) 交易(允许将交易应用于多个实体组中的实体)会是您正在寻找的吗?在此页面上也搜索“跨组交易” 。对于 XG 事务,事务包含的实体的所有更改都会通过,或者不通过。

于 2012-08-04T07:19:21.953 回答