1

Eclipse (Helios) IDE で Google App Engine を実行しています。実装には Java を使用します。テストは localhost: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 eachループ中に削除しようとしました...

1つまたはすべてのイベントをプログラムでクエリを介して削除する方法を知っている人はいますか? (ダッシュボードで削除しても役に立ちません!)

助けてくれてありがとう!

4

1 に答える 1

0

今作ったのですが、理由がわかりません。次のコードが機能するようになりました。

for (Entity event : events) {

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

}    

理由を聞かないでください.... for-eachの最初の最後の2行のコードでこれを15回試しましたが、うまくいきませんでした。

于 2012-10-25T16:08:35.287 に答える