Apache Ignite Index Query返回类型配置问题:找不到对应设置字段
解决IndexQuery配置返回类型(仅键/仅值/仅索引字段)的问题
你提到的文档中描述的KeyOnly、ValueOnly、IndexFieldsOnly三种返回类型配置,在Ignite的实际API中是通过IndexQuery类的对应方法实现的,而非单独的"标记字段",具体用法如下:
1. 仅返回键(KeyOnly)
调用setKeyOnly(true)方法,此时查询返回的Cache.Entry<K, V>中value始终为null:
IndexQueryCriterion endKeyFilter = lte("deptId", 4); IndexQuery<DepartmentKey, Department> indexQuery = new IndexQuery<>(Department.class, "DEPT_IDX"); indexQuery.setCriteria(gte("deptId", 2), endKeyFilter); indexQuery.setKeyOnly(true); // 开启仅返回键模式 Iterator<Cache.Entry<DepartmentKey, Department>> it = cache.query(indexQuery.setPageSize(100)).iterator();
2. 仅返回值(ValueOnly)
调用setValueOnly(true)方法,此时查询返回的Cache.Entry<K, V>中key始终为null:
indexQuery.setValueOnly(true); // 开启仅返回值模式
3. 仅返回索引字段(IndexFieldsOnly)
通过setProjection()方法指定仅返回索引字段(即带有@QuerySqlField注解的字段),此时返回的value对象中,只有指定的索引字段有值,非索引字段(如果存在)会为null:
// 你的Department类中deptId、deptName、hod都是索引字段,直接指定这些字段即可 indexQuery.setProjection("deptId", "deptName", "hod");
补充说明
你参考的IEP文档是功能提案,部分术语和最终实现的API命名有差异,所以找不到文档中描述的"标记字段",改用上述方法即可实现对应需求。
内容的提问来源于stack exchange,提问作者curious_soul
相关产品推荐
相关产品推荐

