查询

时间:2017-08-18 10:27:25

标签: java spring jpa spring-data spring-data-jpa

我有如下查询:

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

我可以将上述查询翻译成spring数据jpa查询方法吗?例如:

findByProductId(productId)

或者我只需要使用 @Query 命名查询来处理此类查询。在尝试问题以及spring数据站点之前我尝试先搜索此处但没有找到任何解决方案。任何帮助表示赞赏。

3 个答案:

答案 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在?和?之间)

相关问题