我正在尝试执行投影查询,以从我的超过一万个实体的数据存储中获取多个属性。我已经阅读并遵循了文档,但我的查询没有返回任何结果。我甚至将我的投影简化为仅投影单个属性,即实体的ID字段,但仍然没有得到任何结果。这是我的简化代码:
Query q = new Query("MyEntity");
q.addProjection(new PropertyProjection("entityId", Long.class));
DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
PreparedQuery pq = datastore.prepare(q);
int count = pq.countEntities(FetchOptions.Builder.withLimit(1000));
log.info("query contains " + count + " items.");
当我运行这段代码时,
count
的值为0。如果我简单地删除第二行,使查询没有投影,count
的值则等于1000。我在我的应用程序中使用Objectify,但我使用GAE低级API进行投影查询,因为我正在使用Objectify v3,它不支持投影查询。更改我的代码以支持Objectify v4将需要很多工作。
我正在投影的
entityId
字段在我的Objectify实体对象中如下所示:@Id Long entityId;