2010-03-11 39 views
1

我的oracle數據庫中有兩個表什麼是刪除的JDO順序

請求和批准者。每個批准者都有一個請求。受約束保護的外鍵。

在我使用kodo jdo 3.4的java代碼中,我調用了在某些或所有審批者上的持久性。 然後在最後如果沒有批准者離開,我在請求上調用delete persistant。當我提交時,我的完整性約束被激發,因爲我認爲sql運行順序錯誤。

有沒有辦法強制刪除調用數據庫以某種方式發生?

我也在考慮在所有東西都被刪除並以正確順序強制刪除的情況下自行回滾事務。但是,這似乎是一個黑客。

感謝

+0

爲什麼你讓它成爲社區wiki。這不符合資格。 –

回答

0

我認爲這個問題是因爲你在一個事務中刪除Approver s和刪除在另一個Request。嘗試提交您刪除Approver的交易。

你可能想要做的第二件事是ALTERRequest表定義並用ON DELETE CASCADE定義它,那麼你不需要自己做所有的事情。不知道是否有某些要求阻止你這樣做。

0

JDO是否管理關係(例如,請求是否有Set字段並指定JDO「mapped-by」屬性),還是明確設置外鍵?如果JDO知道這種關係,它應該按照正確的順序執行刪除操作。

或者,如果更改JDO配置不是選項,則可以在刪除審批者後嘗試調用PersistenceManager的flush()方法。這應該將任何未完成的刪除應用於數據存儲(儘管仍在該事務中)。

+0

JDO正在管理這些關係。 沖洗可能工作。 – Aaron