web-dev-qa-db-ja.com

クエリ間の春のデータ日付

以下のようなクエリがあります:

select * from Products p where ? between  p.effctDate and p.expDate

上記のクエリをSpring Data JPAクエリメソッドに変換できますか?たとえばのように:

findByProductId(productId)

または@ Queryまたは名前付きクエリを使用するだけで、このようなタイプのクエリを処理できます。質問する前に最初にここを検索してみたが、春のデータサイトと同様に解決策が見つからなかった。どんな助けでもありがたいです。

5
Ayan Pal

次のクエリを使用できます。

Date date = //Input date
List<Product> = findByEffctDateAfterAndExpDateBefore(date, date);

両方の「where」句に一致させるには、dateを2回入力する必要があることに注意してください。これは、Datesオブジェクトではなく、Stringオブジェクトを使用していることを前提としています。

詳細は JPAリポジトリ 表2.3を参照してください。

6

あなたはこのトリックのようなものを試すことができます:

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の最善のアプローチではありません...

動的クエリを作成するには、次のものを使用できます。

2
Cepr0

あなたは以下のようなものを使うことを試みることができます:

リスト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?)

1
Vaibhav Gupta