Sto provando a interrogare una tabella Cassandra usando la clausola IN e l'annotazione @Query da Spring Data. Ho una tabella con una chiave di partizione di last_name e una chiave di clustering di first_name.clausola IN con Spring Data e Cassandra @Query
ho questa domanda di lavoro
@Query("SELECT * FROM people WHERE last_name=?0")
public List<People> findByLastName(String lastName);
e vorrei fare qualcosa di simile
@Query("SELECT * FROM people WHERE last_name=?0 AND first_name IN ?1")
public List<People> findByLastName(String lastName, String[] firstName);
ce l'ho a lavorare utilizzando
CassandraOperations.select("SELECT * FROM people WHERE last_name=" + lastName +
" AND first_name IN (" + concatinatedNameList + ")", People.class);
Ma per una serie di ragioni (stile codice, test, giuro che ci sono più) preferirei usare @Query. Qualche idea?
MODIFICA PER ULTERIORI INFORMAZIONI!
Passando in un array, set, o una lista restituisce Caused by: java.lang.IllegalArgumentException: encountered unsupported query parameter type [class [Ljava.lang.String;] in method public abstract
cercato anche:
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);
Non abbiamo trovato nulla, le ricerche della biblioteca per una sola persona con un nome 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);
Nulla trovato, la richiesta è sfuggita e finisce ('''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);
Non abbiamo trovato nulla, la richiesta è sfuggito e finisce ('Joe'',''Jim')
hai provato qualche tipo di raccolta? Imposta o Elenco di stringhe anziché array di stringhe? –
Entrambi gli elenchi e gli insiemi restituiscono un errore simile all'avvio 'Causato da: java.lang.IllegalArgumentException: rilevato tipo di parametro di query non supportato [interfaccia java.util.Impostato] ' –