Prepared Statement with collection in IN clause in Datastax Cassandra CQL driver

i.petruk picture i.petruk · Jun 4, 2013 · Viewed 11.3k times · Source

I am trying to run the following query

SELECT edge_id, b_id FROM booking_by_edge WHERE edge_id IN ?

I bind Java list of Long's as a parameter and I get an exception

SyntaxError: line 0:-1 mismatched input '<EOF>' expecting ')' (ResultSetFuture.java:242)

If I try to use (?) it expects single Long item to be bound, but I need a collection

Is there an error in my syntax?

Answer

gcvt picture gcvt · Mar 25, 2015

Tested in Cassandra 2.1.3, the following code snippet works:

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));