簡體   English   中英

谷歌表示 JDO 不會從 Datastore 進行級聯刪除。 你是怎么做到的?

[英]Google says JDO doesn't do cascading deletes from Datastore. So how do you do it?

谷歌說:

注意:JDO 實現的工作是刪除依賴的子對象,而不是數據存儲。 如果使用低級 API 或管理控制台刪除父實體,則不會刪除相關子對象。

那么如何刪除具有 ArrayList 子實體的實體?

這不應該是一個基本功能 - 從父實體中刪除依賴的子實體嗎?

這並不是說 JDO 不做級聯依賴的孩子。 事實上,它是說它確實做到了,但正是 JDO 中的代碼做到了這一點。 因此,如果您直接接觸數據庫(SQL 或管理工具),則依賴的子級不會被刪除。

實際上,我通過在單獨的查詢中獲取所有依賴的孩子並刪除它們來解決這個問題。 只是刪除父級並沒有從數據存儲中刪除從屬子級。

這是使用 setAncestor() function 完成的

    // delete all children phrases

    Query phrase = new Query("Phrase");
    phrase.setAncestor(parentKey);
    results = datastore.prepare(phrase).asList(FetchOptions.Builder.withDefaults());
    for (Entity result : results)
        datastore.delete(result.getKey());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM