IN 句と Spring Data の @Query アノテーションを使用して、Cassandra テーブルをクエリしようとしています。last_name のパーティション キーと first_name のクラスタリング キーを持つテーブルがあります。
このクエリが機能しています
@Query("SELECT * FROM people WHERE last_name=?0")
public List<People> findByLastName(String lastName);
そして、私は次のようなことをしたいと思います
@Query("SELECT * FROM people WHERE last_name=?0 AND first_name IN ?1")
public List<People> findByLastName(String lastName, String[] firstName);
私はそれを使って働いています
CassandraOperations.select("SELECT * FROM people WHERE last_name=" + lastName +
" AND first_name IN (" + concatinatedNameList + ")", People.class);
しかし、いくつかの理由 (コード スタイル、テスト、他にもあることを誓います) から、@Query を使用したいと思います。何か案は?
詳細については編集してください。
配列、セット、またはリストの戻り値を渡すCaused by: java.lang.IllegalArgumentException: encountered unsupported query parameter type [class [Ljava.lang.String;] in method public abstract
また試しました:
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);
何も見つかりませんでした。ライブラリは、連結された名前を持つ 1 人の人物を検索します('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);
何も見つかりませんでした。リクエストはエスケープされて終了します('''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);
何も見つかりませんでした。リクエストはエスケープされて終了します('Joe'',''Jim')