[英]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.