JPA Spring存储库过滤多个参数

Bla*_*hop 5 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);
}
Run Code Online (Sandbox Code Playgroud)

它非常简单,而且运行良好,但是现在我需要扩展我的休息服务,以考虑其他过滤条件,例如,排序或不排序,按城市和国家/地区进行过滤。调用服务时,可能会设置一些参数,而没有设置其他参数。当然,我无法创建诸如findByCreatedBetween之类的方法来考虑所有可能的数据组合。处理这种情况的最佳方法是什么?

谢谢 !

fra*_*ayz 3

看看这个帖子:

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

您还可以“以旧方式”实现存储库,即将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