【问题标题】:Google App Engine HR Datastore - Java - Delete Entities programaticallyGoogle App Engine HR Datastore - Java - 以编程方式删除实体
【发布时间】:2012-10-25 13:00:17
【问题描述】:

我在我的 Eclipse (Helios) IDE 中运行 Google App Engine。我使用 Java 来实现。测试在 localhost:8888 本地完成。

很遗憾,我无法解决以下问题。我将实体存储在 Google 应用引擎高复制数据存储中。关键是位置,所有事件都存储为各种位置(据我所知),现在没有特殊的唯一主键。我用:

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"));
}

它提供所有事件并在我的网络浏览器站点中打印数据。 --> 有效

但我无法删除这样的事件实体。 我试过:dss.delete(key),我尝试在 for each 循环中删除,...

有人知道如何通过查询以编程方式删除一个或所有事件吗? (在仪表板中删除对我没有帮助!)

非常感谢您的帮助!

【问题讨论】:

    标签: java google-app-engine


    【解决方案1】:

    我现在成功了,但我不知道为什么。下面的代码现在可以工作了:

    for (Entity event : events) {
    
        currentAktionen.getWriter().println(event.getProperty("date") + "," +   
               event.getProperty("info"));
        Key key = aktion.getKey();
        dss.delete(key);
    
    }    
    

    不要问我为什么,....我之前在 for-each 开头的最后两行代码尝试了 15 次,但没有成功。

    【讨论】:

      猜你喜欢
      • 2015-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-08
      • 2018-08-24
      • 1970-01-01
      相关资源
      最近更新 更多