簡體   English   中英

Google App Engine HR數據存儲-Java-以編程方式刪除實體

[英]Google App Engine HR Datastore - Java - Delete Entities programatically

我正在Eclipse(Helios)IDE中運行Google App Engine。 我使用Java來實現。 測試是在本地主機上完成的:8888。

不幸的是,我無法解決以下問題。 我將實體存儲在Google App Engine高復制數據存儲區中。 關鍵是位置,所有事件都存儲為各種類型的位置(據我了解),現在沒有特殊的唯一主鍵。 我用:

DatastoreService dss;
Key key;
Entity event;

dss = DatastoreServiceFactory.getDatastoreService();
key = KeyFactory.createKey("location", location);  //location is String

event = new Entity("event", key);
event.setProperty("date", date);
event.setProperty("info", infostrg);
dss.put(event);

這很好。

當我嘗試在特定位置發生所有事件時,我使用下面的代碼:

dss = DatastoreServiceFactory.getDatastoreService();

key = KeyFactory.createKey("location", location);
aktQuery = new Query ("event", key);

aktQuery.addSort("date", Query.SortDirection.DESCENDING);       
//List<Entity>
events = dss.prepare(aktQuery).asList(FetchOptions.Builder.withLimit(20));

for (Entity event : events) {
    //HTTPServeletResponse only prints out for test
    currentAktionen.getWriter().println(event.getProperty("date") + "," +   
               event.getProperty("info"));
}

它傳遞所有事件並在我的Web瀏覽器站點中打印數據。 ->作品

但是我無法刪除這樣的事件實體。 我嘗試過:dss.delete(key),我嘗試在for每個循環中刪除...

有人知道如何通過查詢以編程方式刪除一個或所有事件嗎? (在Dashbord中刪除對我沒有幫助!)

非常感謝您的幫助!

我現在做到了,但我不知道為什么。 以下代碼現在可以工作:

for (Entity event : events) {

    currentAktionen.getWriter().println(event.getProperty("date") + "," +   
           event.getProperty("info"));
    Key key = aktion.getKey();
    dss.delete(key);

}    

不要問我為什么,....我在for-each的開頭嘗試了最后兩行代碼,然后嘗試了15次。

暫無
暫無

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

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