我正在尝试执行投影查询,以便从我的一万多个实体的数据存储中的每个实体中获取多个属性。我已阅读并遵循文档,但我的查询没有返回任何结果。我什至将我的投影简化为仅投影一个属性,即实体的 ID 字段,但仍然得到 0 个结果。这是我的简化代码:
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;