我正在尝试运行以下查询
SELECT edge_id, b_id FROM booking_by_edge WHERE edge_id IN ?
我将 Long 的 Java 列表绑定为参数,但出现异常
SyntaxError: line 0:-1 mismatched input '<EOF>' expecting ')' (ResultSetFuture.java:242)
如果我尝试使用 (?) 它希望绑定单个 Long 项目,但我需要一个集合
我的语法有错误吗?
我正在尝试运行以下查询
SELECT edge_id, b_id FROM booking_by_edge WHERE edge_id IN ?
我将 Long 的 Java 列表绑定为参数,但出现异常
SyntaxError: line 0:-1 mismatched input '<EOF>' expecting ')' (ResultSetFuture.java:242)
如果我尝试使用 (?) 它希望绑定单个 Long 项目,但我需要一个集合
我的语法有错误吗?
在 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));
在 Datastax bugzilla 上得到响应,目前不支持,但计划中
https://issues.apache.org/jira/browse/CASSANDRA-4210
更新:在 Cassandra 2.0.1 中受支持
在文档中很难找到,但在手册的元组部分中有描述。
如果你想使用命名参数,你应该使用 setList() 方法。
BoundStatement bs = session.prepare("select col from table where col in :values").bind();
bs.setList("values", Arrays.asList(v1, v2, v3));