使用 datastax 从列表类型获取数据时出错

Error in getting data from list type using datastax

我使用 Cassandra 2.1.7CQL3 来处理它。

我的 table 中有一个 list<text> 类型的列。我使用 DataStax cassandra-driver-core-2.1.5Cassandra 读取和写入我的数据。在构建我的查询时,我发现为我的列 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