从数据存储读取不一致

时间:2013-05-04 12:53:12

标签: google-app-engine google-cloud-datastore

我是Google App引擎新手,我正在尝试一些示例代码而且我被卡住了:(

以下是代码:

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();

我正在尝试使用一个属性“qty”创建两个“item”实体。这两个“项”实体是实体“Set”的后代。但我无法找回“项目”实体。查询有问题吗?

1 个答案:

答案 0 :(得分:1)

你需要把txn.commit();就在datastore.put(oItem2)之后;这将确保您的写入操作完成后,运行查询(使用或不使用单独的事务)将获取正确的结果

希望它有所帮助。