J'essaie d'interroger une table Cassandra en utilisant la clause IN et l'annotation @Query de Spring Data. J'ai une table avec une clé de partition de last_name et une clé de clustering de first_name.Clause IN avec Spring Data et Cassandra @Query
J'ai cette requête de travail
@Query("SELECT * FROM people WHERE last_name=?0")
public List<People> findByLastName(String lastName);
et je voudrais faire quelque chose comme
@Query("SELECT * FROM people WHERE last_name=?0 AND first_name IN ?1")
public List<People> findByLastName(String lastName, String[] firstName);
Je l'ai travail à l'aide
CassandraOperations.select("SELECT * FROM people WHERE last_name=" + lastName +
" AND first_name IN (" + concatinatedNameList + ")", People.class);
Mais pour un certain nombre de raisons (style de code, test, je jure qu'il y en a plus) Je préférerais utiliser @Query. Des idées?
MODIFIEZ POUR PLUS D'INFO!
passage dans un tableau, ensemble, ou liste retourne Caused by: java.lang.IllegalArgumentException: encountered unsupported query parameter type [class [Ljava.lang.String;] in method public abstract
a également essayé:
String firstName = "Joe,Jim";
@Query("SELECT * FROM people WHERE last_name=?0 AND first_name IN (?1)")
public List<People> findByLastName(String lastName, String firstName);
Rien trouvé, la recherche de la bibliothèque pour une personne seule avec un nom concatinated ('Joe,Jim')
String firstName = "'Joe','Jim'";
@Query("SELECT * FROM people WHERE last_name=?0 AND first_name IN (?1)")
public List<People> findByLastName(String lastName, String firstName);
Rien trouvé, la requête est échappée et se termine ('''Joe'',''Jim''')
String firstName = "Joe','Jim"; // Hoping the library would just add the outer quotes, getting desperate
@Query("SELECT * FROM people WHERE last_name=?0 AND first_name IN (?1)")
public List<People> findByLastName(String lastName, String firstName);
Pour l'instant, la demande est échappé et finit par ('Joe'',''Jim')
Avez-vous essayé un type de collection? Définir ou liste de chaînes au lieu de tableau de chaînes? –
Les listes et les ensembles renvoient une erreur similaire à celle au démarrage 'Causée par: java.lang.IllegalArgumentException: rencontré le type de paramètre de requête non pris en charge [interface java.util.Set] ' –