0

Je suis en train d'interroger une table Cassandra en utilisant la clause IN et l'annotation @Query du printemps de donnéesComment utiliser la clause IN dans les données de printemps Cassandra

Ma requête dans initialisation méthodolo-

 session = cassandraSessionFactory.getSession(); 
    statementmyList = session.prepare("select * from my_file_content where my_content IN (?);"); 

Je ai essayé de lier la requête avec boundStatement-

final BoundStatement boundStatement = DaoConstants.getBoundStatement(statementmyList); 

    try 
    { 
    List<Row> rowList = 
     session 
      .execute(
       boundStatement 
        .bind(myList)) 
      .all(); 

      // myList = "'04748558-0eb3','531aaf2bf6b782f95e2e','6fc98ac2'"  

} 

rowList renvoie le tableau vide. Qu'est-ce que je fais mal ici?

Répondre

0

Le problème est que vous n'avez pas besoin la parenthèse si vous liez une liste complète, il devrait donc être:

session = cassandraSessionFactory.getSession(); 
statementmyList = session.prepare("select * from my_file_content where my_content IN ?;"); 

(?) fonctionnerait si vous fournissiez une seule valeur, mais vous voulez ? si vous fournissez une collection.

+0

Ceci est certain que okla veut utiliser une collection passée en param. Maintenant, je suis impatient de savoir si cela fonctionne de cette façon ou non. –

+0

Vous pouvez utiliser une collection en tant que paramètre, mais vous ne devez pas avoir de parenthèses autour du marqueur de liaison, sinon elle sera interprétée comme un élément d'une collection, au lieu d'une collection elle-même. –

+1

Super, c'est un apprentissage pour moi. Je vais essayer ça aujourd'hui. –