以下のようなクエリがあります:
select * from Products p where ? between p.effctDate and p.expDate
上記のクエリをSpring Data JPAクエリメソッドに変換できますか?たとえばのように:
findByProductId(productId)
または@ Queryまたは名前付きクエリを使用するだけで、このようなタイプのクエリを処理できます。質問する前に最初にここを検索してみたが、春のデータサイトと同様に解決策が見つからなかった。どんな助けでもありがたいです。
次のクエリを使用できます。
Date date = //Input date
List<Product> = findByEffctDateAfterAndExpDateBefore(date, date);
両方の「where」句に一致させるには、date
を2回入力する必要があることに注意してください。これは、Date
sオブジェクトではなく、String
オブジェクトを使用していることを前提としています。
詳細は JPAリポジトリ 表2.3を参照してください。
あなたはこのトリックのようなものを試すことができます:
select
p
from
Product p
where
(?1 = 'field1' and p.field1 between p.effctDate and p.expDate)
or (?1 = 'field2' and p.field2 between p.effctDate and p.expDate)
or (?1 = 'field3' and p.field3 between p.effctDate and p.expDate)
or (?1 = 'field4' and p.field4 between p.effctDate and p.expDate)
...
しかし、これはIMOの最善のアプローチではありません...
動的クエリを作成するには、次のものを使用できます。
あなたは以下のようなものを使うことを試みることができます:
リストfindAllByDateApprovedBetween(String dateApprovedFrom、String dateApprovedTo);
それは次のように変換されます:
Hibernate:applicatio0_.id as id1_1_、applicatio0_.date_approved as date_app4_1_ from application applicatio0_ where(applicatio0_.date_approved from?and?)