我有一种情况,我们更新实体数据,然后根据某些类型的更新,我们也可能更新另一个实体。
在某些情况下,第二个条目中的更新可能由于某些原因而失败并引发异常。
问题是如何处理这种情况,因为我们想回滚在第一个实体中所做的更改。
我们不能将更新推迟到第一个条目,直到第二个条目更新。
在目前的情况下,如果发生这种情况
一旦代码到达下面的块,即使第二次实体更新失败,它也会提交第一个条目更改。那么如何回滚呢?如果第二个实体更新失败,我认为不关闭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");
}