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");
}
看起来不错amy。试试吧 – Vik 2012-08-04 17:27:03
那么我们使用的是jdo,所以看起来像我们需要在jdoconfig.xml中启用所有实体才能运行跨组事务。但是,我没有看到jdo案例的页面上的代码?我的意思是如何开始txn并完成它?为了清除我的需求,我们希望将原子更新运行到两个不同的实体。 – Vik 2012-08-04 17:30:35