I am trying to query a Cassandra table using an IN clause and @Query annotation from Spring Data. I have a table with the last_name section key and the first_name clustering key.
This request works for me
@Query("SELECT * FROM people WHERE last_name=?0") public List<People> findByLastName(String lastName);
and I would like to do something like
@Query("SELECT * FROM people WHERE last_name=?0 AND first_name IN ?1") public List<People> findByLastName(String lastName, String[] firstName);
I use
CassandraOperations.select("SELECT * FROM people WHERE last_name=" + lastName + " AND first_name IN (" + concatinatedNameList + ")", People.class);
But for a number of reasons (code style, testing, I swear there are more), I would rather use @Query. Any ideas?
EDIT MORE INFO!
Passing to an array, set, or list returns Caused by: java.lang.IllegalArgumentException: encountered unsupported query parameter type [class [Ljava.lang.String;] in method public abstract
Also tried:
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);
Nothing found, search in the library of one person with a joint name ('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);
Nothing found, the request runs and ends ('''Joe'',''Jim''')
String firstName = "Joe','Jim";
Nothing found, the request runs and ends ('Joe'',''Jim')