gpt4 book ai didi

java - Google App Engine 投影查询返回 0 个结果

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:52:56 26 4
gpt4 key购买 nike

我正在尝试执行投影查询,以便从我的超过一万个实体的数据存储中的每个实体中获取多个属性。我已阅读并关注 documentation ,但我的查询没有返回任何结果。我什至将我的投影简化为只投影单个属性,即实体的 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;

最佳答案

事实证明,我仅投影 ID 属性的简化案例证明是问题所在。当我在任何其他属性字段上测试相同的代码时,投影查询有效。

创建投影查询时,不应投影 ID 属性。它仍然包含在结果实体中,但将它包含在投影中会导致查询没有结果。 ID 属性的存储方式与实体中其他属性字段的存储方式不同。

关于java - Google App Engine 投影查询返回 0 个结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15760437/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com