【问题标题】:Read from datastore not consistent从数据存储中读取不一致
【发布时间】:2016-08-18 01:07:32
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

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

    希望对你有帮助。

    【讨论】:

    • 谢谢它的工作..!!顺便问一下,在提交事务之前是否有读取同一事务中创建的“项目”(后代)实体??
    • 不完全是,在实际提交之前读取数据没有逻辑意义。如果您想使用显式引用,更好的方法是为每个操作单元使用不同的事务。
    猜你喜欢
    • 2014-12-10
    • 1970-01-01
    • 1970-01-01
    • 2020-01-18
    • 1970-01-01
    • 2015-01-07
    • 2018-03-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多