Spring Data JPA を使用しており、リポジトリにクエリを追加しようとしています。次のような @Query アノテーションなしでクエリを作成しようとしていました。
List<Item> findByTypeAndStateOrStateAndStartDateBetween(Type type, State s, State s2, Date startDate, Date endDate);
私の目標は、次のようなクエリを作成することです。
select * from item where type = ? and (state = ? or state = ?) and start_date between ? and ?
私の問題は OR 句にあります。ブラケットがあることを確認する方法はありますか?そうでなければ、ロジックは正しくありません。ここで見つけた例: http://static.springsource.org/spring-data/data-jpa/docs/1.0.0.M1/reference/html/#jpa.query-methods.query-creation
複数の列を持つ or 句は使用しないでください。
また、オブジェクトのリストを渡す方法はありますか。たとえば、3 つの状態を持つアイテムを検索したい場合、別のクエリを作成する必要がありますが、これはうまくスケーリングできません。
ありがとう。
編集:
@Query 表記を使用して状態のリストを渡す方法を見つけました。あなたはそれを次のようにします:
@Query("FROM item i WHERE i.type = ?1 AND i.state IN (?2)")
次に、2 番目のパラメーターとしてリストをメソッドに渡すだけです。@Query 表記を使用せずにこれを行う方法はまだわかりません。