在Datastax Cassandra CQL驱动程序的IN子句中使用集合准备语句

i.p*_*ruk 14 cql cassandra datastax-enterprise cql3 datastax-java-driver

我正在尝试运行以下查询

SELECT edge_id, b_id FROM booking_by_edge WHERE edge_id IN ?
Run Code Online (Sandbox Code Playgroud)

我绑定了Long的Java列表作为参数,我得到一个例外

SyntaxError: line 0:-1 mismatched input '<EOF>' expecting ')' (ResultSetFuture.java:242)
Run Code Online (Sandbox Code Playgroud)

如果我尝试使用(?)它需要绑定单个Long项,但我需要一个集合

我的语法有错误吗?

gcv*_*cvt 18

在Cassandra 2.1.3中测试过,以下代码片段有效:

PreparedStatement prepared = session.prepare("SELECT edge_id, b_id FROM booking_by_edge WHERE edge_id IN ?;");
List<Long> edgeIds = Arrays.asList(1L, 2L, 3L);
session.execute(prepared.bind(edgeIds));
Run Code Online (Sandbox Code Playgroud)


i.p*_*ruk 7

得到了对Datastax bugzilla的回应,它目前不受支持,但有计划

https://issues.apache.org/jira/browse/CASSANDRA-4210

更新:Cassandra 2.0.1支持