1

私は Google App Engine を初めて使用します。いくつかのサンプル コードを試していたのですが、行き詰まってしまいました :(

以下はコードです:

datastore = DatastoreServiceFactory.getDatastoreService();

    Transaction txn = datastore.beginTransaction();

    Entity oSet = new Entity("Set", "Set1");
    datastore.put(oSet);

    Entity oItem1 = new Entity("item", "item1", oSet.getKey());
    oItem1.setProperty("qty", "two");
    datastore.put(oItem1);

    Entity oItem2 = new Entity("item", "item2", oSet.getKey());
    oItem2.setProperty("qty", "five");
    datastore.put(oItem2);

    Query query = new Query("item").setAncestor(oSet.getKey());


    List<Entity> oItems = datastore.prepare(query).asList(FetchOptions.Builder.withLimit(50));

    for(Entity i : oItems) {
        System.out.println("item qty: " + i.getProperty("qty"));
    }

    txn.commit();

1 つのプロパティ "qty" を持つ 2 つの "item" エンティティを作成しようとしています。これらの 2 つの「アイテム」エンティティは、エンティティ「セット」の子孫です。しかし、「アイテム」エンティティを元に戻すことはできません。クエリに何か問題がありますか?

4

1 に答える 1

1

txn.commit(); を置く必要があります。datastore.put(oItem2); の直後 これにより、書き込み操作が確実に完了し、その後、実行中のクエリ (別のトランザクションの有無にかかわらず) が正しい結果を取得します。

それが役に立てば幸い。

于 2013-05-04T15:33:30.967 に答える