11

Ich versuche, die folgende AbfragePrepared Statement mit Sammlung in IN-Klausel in DataStax Cassandra CQL Fahrer

SELECT edge_id, b_id FROM booking_by_edge WHERE edge_id IN ? 

Ich binde Java Liste von Longs als Parameter zu laufen und ich erhalte eine Ausnahme

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

Wenn ich versuche (?) Zu erwarten, dass ein einzelnes langes Objekt gebunden wird, aber ich brauche eine Sammlung

Gibt es einen Fehler in meiner Syntax?

Antwort

12

in Cassandra Getestet 2.1.3, dem folgenden Code-Schnipsel funktioniert:

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

es ist ein bisschen schwierig ist, in der Dokumentation zu finden, aber es ist in der tuples section of the manual beschrieben .

Wenn Sie benannte Parameter verwenden möchten, sollten Sie die Methode setList() verwenden.

BoundStatement bs = session.prepare("select col from table where col in :values").bind(); 
bs.setList("values", Arrays.asList(v1, v2, v3)); 
Verwandte Themen