我有如下查询:
select * from Products p where ? between p.effctDate and p.expDate
我可以将上述查询翻译成spring数据jpa查询方法吗?例如:
findByProductId(productId)
或者我只需要使用 @Query 或命名查询来处理此类查询。在尝试问题以及spring数据站点之前我尝试先搜索此处但没有找到任何解决方案。任何帮助表示赞赏。
答案 0 :(得分:4)
您可以使用以下查询:
Date date = //Input date
List<Product> = findByEffctDateAfterAndExpDateBefore(date, date);
请注意,您必须输入date
两次以匹配'where'子句。这是假设您使用的是Date
个对象,而不是文字String
s。
有关详细信息,请参阅JPA Repositories表2.3。
答案 1 :(得分:2)
你可以尝试这样的技巧:
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 :(得分:0)
您可以尝试使用以下内容:
列出findAllByDateApprovedBetween(String dateApprovedFrom,String dateApprovedTo);
它翻译为:
休眠:从应用程序applicatio0_中选择applicatio0_.id作为id1_1_,applicatio0_.date_approved作为date_app4_1_,其中(applicatio0_.date_approved在?和?之间)