簡體   English   中英

按鍵刪除實體而不先在應用程序引擎中獲取它(使用JDO)

[英]Delete an entity by key without fetching it first in app engine (using JDO)

有沒有辦法刪除實體而不必先從數據存儲區中獲取它? 我假設我已經擁有該實體的密鑰或ID。 我正在考慮像deleteObjectById這樣的東西,它類似於PersistenceManager上的getObjectById

我能想到的最接近的是使用Query.deletePersistentAll()如看到這里 ),並指定一個查詢,只依賴於關鍵,但如果是要刪除它之前獲取的實體,我不能告訴。

謝謝

編輯:我知道如何使用低級API以及python API。 我想知道是否有辦法在JDO層內完成它。

datanucleus在谷歌小組回答了我的問題:

並不是的。 問題是對象可能具有關系,因此,由於這些可能導致級聯操作,因此通常必須首先將其加載到內存中。 不需要加載到內存中的唯一情況是要刪除的對象的類沒有關系。

進入低級別的API並爆破對象可能會或可能不會對相關對象產生影響......也許負責它的人可以對此進行評論。

我不確定JDO,但對於Python,這可能是一個小的黑客。 您需要使用相同的密鑰“創建”新實例,然后將其刪除。 它只會打到數據庫一次。

instance = Model(key=key_to_delete, required_property='dummy')
instance.delete()

如何使用低級API

我認為DataService.delete(Key)將完全滿足您的需求。

如果使用Long作為密鑰,則必須首先使用KeyMaker創建密鑰。

Key k = KeyFactory.createKey(Employee.class.getSimpleName(), "Alfred.Smith@example.com");

暫無
暫無

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

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