我使用Cassandra 2.1.7
和CQL3
进行处理。
我的表格中有一个list<text>
类型的列。我使用DataStax cassandra-driver-core-2.1.5
从Cassandra
读取和写入数据。在构建我的查询时,我看到为我的列list<text>
构建的查询是错误的。(我在Datastax DevCenter
中检查了两个查询
构建查询的代码。
Clause clause = null;
for (Entry<String, Object> val : conditionMap.entrySet()) {
clause = QueryBuilder.eq("\"".concat(val.getKey()).concat("\""), val.getValue());
where = where.and(clause);
}
使用上述方法构建的查询。
SELECT * FROM "ashokkeyspace"."table150" WHERE "id"=150 AND "listdata" =['apple'];
我实际需要什么查询。
SELECT * FROM "ashokkeyspace"."table150" WHERE "id"=150 AND "listdata" contains 'apple';
答案 0 :(得分:2)
更新:2.1.7今天放弃了
尚未正式发布/ documented。
但你可以build yourself或推迟到GA为止。
我建议在推送到Prod之前等待,因为当前的2.1.7分支存在一些已知的性能问题。
您希望查询构建器中有新的ContainsClause
。
有关发布日期等的更新,请参阅driver mailing list。