JPA Spring存储库过滤多个参数

时间:2016-04-07 19:16:05

标签: spring hibernate spring-mvc spring-data spring-data-jpa

我使用Spring存储库,如下所示,以按日期范围过滤

public interface CustomerRepo extends CrudRepository<Customer, Long> {

    public List<Customer> findByCreatedBetween(LocalDate start, LocalDate end);
}

这很荒谬简单,工作正常,但现在我需要扩展我的休息服务以考虑其他过滤标准,例如排序o未排序,按城市和国家过滤。在调用服务时,可以设置一些参数而不设置其他参数。当然,我不能创建像findByCreatedBetween这样的方法来考虑所有可能的数据组合。处理这种情况的最佳方法是什么?

谢谢!

2 个答案:

答案 0 :(得分:1)

看一下这篇文章:

http://www.petrikainulainen.net/programming/spring-framework/spring-data-jpa-tutorial-part-four-jpa-criteria-queries/

您还可以实现您的存储库&#34;旧方法&#34;,即将entityManager注入您的存储库并创建接受自定义条件对象的findByCriteria方法。在此处查找标准API文档:https://docs.jboss.org/hibernate/entitymanager/3.5/reference/en/html/querycriteria.html

标准API的另一种替代方法是使用JPQL,您可以使用相同的条件创建动态查询字符串。 JPQL参考:http://docs.oracle.com/javaee/6/tutorial/doc/bnbtg.html

答案 1 :(得分:0)

可能的解决方案是使用export -U pathtypeset -U

有一篇文章准确描述了使用Spring Data和Querydsl为REST API构建查询语言的一些场景。 tutorial

此处there是关于querydsl和谓词的简短描述(步骤8灵活谓词执行)

他描述了这种情况:

  

要求:“作为用户,我想通过名字搜索 客户,   姓氏,电子邮件地址任意组合