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

标签 java google-app-engine projection objectify

我正在尝试执行投影查询,以便从我的超过一万个实体的数据存储中的每个实体中获取多个属性。我已阅读并关注 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/

相关文章:

java - 在 3d 空间中渲染三角形面

Gnuplot:如何在三个坐标面上绘制热图以可视化 4D 数据

google-app-engine - 如何使用 golang 将种子数据加载到 App Engine 的数据存储中?

python - Simplejson 转储和加载不返回有效字典

Java FXML 加载 View 供以后使用

java - 使用 ActiveXObject 将图像插入 Excel 单元格 ("Excel.Application")

php - 未找到类 'Way\Generators\GeneratorsServiceProvider'

entity-framework - 仅生产错误 - "The specified value is not an instance of type ' Edm.Int3 2' Parameter name: value"

java - 识别 Png 图像是否具有 100% 透明背景

java - 从数据库加载 Spring PropertyPlaceholderConfigurer