2009-10-24 68 views
1

我想從我的數據存儲與Java刪除一些不需要的數據,發現 一些代碼使用我修改在10秒內儘可能多地刪除 條目儘可能DatastoreService:散裝實體刪除

DatastoreService datastore = DatastoreServiceFactory.getDatastoreService(); 
Query query = new Query("PostalCodes"); 
long starttime = (new Date()).getTime(); 
for (Entity entity : datastore.prepare(query).asIterable()) { 
     datastore.delete(entity.getKey()); 
     if ((new Date().getTime()) > (starttime + 10000)) 
       break; 
} 

它似乎工作,當我運行這個。我檢查控制檯的數據查看器 並且我試圖刪除的那個(「PostalCodes」)消失了,但是在我執行此操作後,當天 整個事情都恢復了。我是否錯過了一個調用flush或commit的 ?!?

有沒有更好的方法來做到這一點?

回答

1

看看類似的問題:Delete all data for a kind in Google App Engine其他批量刪除信息的方式。

+0

感謝您的鏈接。我一直在這裏,最終刪除了我想要的內容,但我仍然不確定發生了什麼。 – 2010-01-08 13:19:58

0
public final class PMF { 
    private static final PersistenceManagerFactory pmfInstance = 
     JDOHelper.getPersistenceManagerFactory("transactions-optional"); 

    private PMF() { 
     PersistenceManagerFactory pmfInstance = PMF.get(); 
     PersistenceManager pm = pmfInstance.getPersistenceManager(); 
     pm.deletePersistentAll();/* by using this all the entities which are created earlier will be deleted*/ 
    } 

    public static PersistenceManagerFactory get() { 
     return pmfInstance; 
    } 
} 
1

有可能刪除「數據存儲區管理」部分中的某些類型的所有實體來說:

選擇實體,然後選擇「刪除實體」:

enter image description here