Ignite SqlQuery和SqlFieldsQuery
看来SqlQuery只支持以Ignite SqlQuery和SqlFieldsQuery,ignite,Ignite,看来SqlQuery只支持以select*开头的sql?它不支持只选择某些列的其他sql吗 从person中选择id和name并将列映射到相应的POJO 如果我使用SqlFieldQuery来运行sql,结果是一个列表的QueryCursor(每个列表包含一条结果记录)。但如果sql以select*开头,则此列表的内容将与字段查询不同,如: 从人员中选择id、姓名、年龄 对于选择*,每个列表由3部分组成: 第一个元素是缓存的键 第二个元素是包含数据的pojo对象 tailing元素是每列的值 为
select*
开头的sql?它不支持只选择某些列的其他sql吗
从person中选择id和name
并将列映射到相应的POJO
如果我使用SqlFieldQuery来运行sql,结果是一个列表的QueryCursor(每个列表包含一条结果记录)。但如果sql以select*
开头,则此列表的内容将与字段查询不同,如:
从人员中选择id、姓名、年龄
对于选择*
,每个列表由3部分组成:
为什么会这样设计?如果我不知道SqlFieldsQuery运行的sql是什么,那么我需要额外的努力来找出列表中包含的内容。
SqlQuery
返回键和值对象,而SqlFieldsQuery
允许选择特定字段。使用哪一个取决于您的用例
目前,
select*
确实包括预定义的\u key
和\u val
字段,这将在将来得到改进。但是,一般来说,在运行SQL查询时列出要获取的字段是一种很好的做法(这适用于任何SQL数据库,而不仅仅是Ignite)。例如,通过这种方式,您的代码将在模式更改时免受意外行为的影响。Tom,IGNITE JIRA中也有相同的问题。例如:作为一种解决方法,您可以指定列列表,而不使用星号。谢谢@kuaw26。另一种情况是,select*
返回的前两列是K和V