繁体   English   中英

获取实体组计数始终返回0

[英]Get entity group count always return 0

按照GAE官方文档,我尝试在本地开发环境(单元测试)中对其进行测试,但不幸的是,实体组计数始终返回0:

    DatastoreService ds = DatastoreServiceFactory.getDatastoreService();
    MemcacheService memcacheService = MemcacheServiceFactory.getMemcacheService();

    Entity entity1 = new Entity("Simple");
    Key key1 = ds.put(entity1);
    Key entityGroupKey = Entities.createEntityGroupKey(key1);
    //should print 1, but 0
    showEntityGroupCount(ds, memcacheService, entityGroupKey);

    Entity entity2 = new Entity("Simple", key1);
    Key key2 = ds.put(entity2);
    //should print 2, but still 0
    showEntityGroupCount(ds, memcacheService, entityGroupKey);

以下是从文档中复制供快速参考:

// A simple class for tracking consistent entity group counts
class EntityGroupCount implements Serializable {
  long version; // Version of the entity group whose count we are tracking
  int count;
  EntityGroupCount(long version, int count) {
    this.version = version;
    this.count = count;
  }
}

// Display count of entities in an entity group, with consistent caching
void showEntityGroupCount(DatastoreService ds, MemcacheService cache, PrintWriter writer,
                          Key entityGroupKey) {
  EntityGroupCount egCount = (EntityGroupCount) cache.get(entityGroupKey);
  if (egCount != null && egCount.version == getEntityGroupVersion(ds, null, entityGroupKey)) {
    // Cached value matched current entity group version, use that
    writer.println(egCount.count + " entities (cached)");
  } else {
    // Need to actually count entities. Using a transaction to get a consistent count
    // and entity group version.
    Transaction tx = ds.beginTransaction();
    PreparedQuery pq = ds.prepare(tx, new Query(entityGroupKey));
    int count = pq.countEntities(FetchOptions.Builder.withLimit(5000));
    cache.put(entityGroupKey,
              new EntityGroupCount(getEntityGroupVersion(ds, tx, entityGroupKey), count));
    tx.rollback();
    writer.println(count + " entities");
  }
}

关于这个问题有什么想法吗? 提前致谢。

由于方法嵌套,两次调用了Entities.createEntityGroupKey()。 更改两个事件

showEntityGroupCount(ds, memcacheService, entityGroupKey);

showEntityGroupCount(ds, memcacheService, key1);

并且出现正确的计数(无论如何在开发环境中)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM