2009-11-07 40 views
3

有沒有辦法刪除實體而無需首先從數據存儲中獲取它?我假設我已經擁有該實體的密鑰或ID。 我在想deleteObjectById這樣的東西,getObjectByIdPersistenceManager通過密鑰刪除實體而無需在應用引擎中首先獲取它(使用JDO)

我能想到的最接近的方法是使用Query.deletePersistentAll()(如圖所示here)並指定一個僅依賴於該鍵的查詢,但我無法確定在刪除它之前是否要獲取該實體。

感謝

編輯:我知道如何使用低級別的API,以及在Python API來做到這一點。我想知道是否有辦法在JDO層內完成它。

回答

2

DataNucleus將回答我的問題google group

不是真的。問題是一個對象可能有關係,所以,因爲它們可能會導致級聯操作,所以通常必須先將 加載到內存中。唯一不需要將 加載到內存中的情況是,如果要刪除的對象的類有 沒有關係。

進入低級別的API和爆炸物體可能會或可能不會影響相關的對象......也許有人負責 它可以對此發表評論。

0

如何使用Low-level API

我認爲DataService.delete(Key)將完全符合您的需求。

如果您使用Long作爲鍵,您將需要先使用KeyMaker創建一個鍵。

Key k = KeyFactory.createKey(Employee.class.getSimpleName(), "[email protected]"); 
+0

我知道數據存儲中存在的功能,我試圖確定是否可以從JDO層訪問它。 – 2009-11-09 17:03:30

2

我不確定JDO,但對於Python來說,這可能是一個小小的破解。您需要使用相同的密鑰「創建」一個新實例,然後將其刪除。它只會打一次數據庫。

instance = Model(key=key_to_delete, required_property='dummy') 
instance.delete() 
相關問題