私はSpring Data JPAを使用しており、リポジトリにクエリを追加しようとしています。私はちょうどのような@query注釈なしでクエリを構築しようとしていた。Spring JPAデータ "OR"クエリ
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
1つ以上の句の句がありません。
また、オブジェクトのリストを渡す方法もあります。たとえば、3つの州の商品を見つけたい場合、別のクエリを作成する必要があります。これはうまく調整できません。
ありがとうございました。
編集:私は@query表記を使用して状態のリストを渡す方法を考え出し
。そうですね。
@Query("FROM item i WHERE i.type = ?1 AND i.state IN (?2)")
次に、2番目のパラメータとしてメソッドにリストを渡すことができます。 @Query表記を使わずにこれを行う方法はまだ分かりません。
でメソッド名の内部表4.サポートされているキーワードを、私はこの春、データがクエリを指定することができますなぜ、それだけであなただけではメソッド名から欲しいものを決定する際に、これまで行くことができると思います。単純なクエリでは問題ありませんが、複雑さを増やしてしまえば、推測するのではなく、必要なものを正確に伝える方がよいでしょう。 – Thevenin
さらに、@Queryは長いメソッド名より読みやすくなります。 – skel625
ありがとう、これは私が同様に来た結論です。 @Queryを使うだけです。 – devo