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