使用 datastax 从列表类型获取数据时出错
Error in getting data from list type using datastax
我使用 Cassandra 2.1.7
和 CQL3
来处理它。
我的 table 中有一个 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);
}
我使用上述方法构建的Query。
SELECT * FROM "ashokkeyspace"."table150" WHERE "id"=150 AND "listdata" =['apple'];
我实际需要什么查询。
SELECT * FROM "ashokkeyspace"."table150" WHERE "id"=150 AND "listdata" contains 'apple';
更新:今天发布了 2.1.7
看起来这是 supported as of the driver version 2.1.7。
尚未正式发布/documented。
但是你可以build yourself或者等到正式发布。
我建议在推送到 Prod 之前等待,因为当前的 2.1.7 分支存在一些已知的性能问题。
您需要查询生成器中的新 ContainsClause
。
有关发布日期等的更新,请参阅 driver mailing list。
我使用 Cassandra 2.1.7
和 CQL3
来处理它。
我的 table 中有一个 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);
}
我使用上述方法构建的Query。
SELECT * FROM "ashokkeyspace"."table150" WHERE "id"=150 AND "listdata" =['apple'];
我实际需要什么查询。
SELECT * FROM "ashokkeyspace"."table150" WHERE "id"=150 AND "listdata" contains 'apple';
更新:今天发布了 2.1.7
看起来这是 supported as of the driver version 2.1.7。
尚未正式发布/documented。
但是你可以build yourself或者等到正式发布。
我建议在推送到 Prod 之前等待,因为当前的 2.1.7 分支存在一些已知的性能问题。
您需要查询生成器中的新 ContainsClause
。
有关发布日期等的更新,请参阅 driver mailing list。