spring - JPA Spring存储库过滤多个参数

标签 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 这样的方法来考虑所有可能的数据组合。处理这种情况的最佳方法是什么?

谢谢!

最佳答案

看看这篇文章:

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

您还可以“以旧方式”实现存储库,即将entityManager注入(inject)到您的存储库中并创建一个接受自定义条件对象的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

关于spring - JPA Spring存储库过滤多个参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36485224/

相关文章:

Hibernate 中的 java.util.Date 映射

java - 使用 Spring Boot、JPA 通过引用关联实体

java - Hibernate:在分离状态下更改对象后的持久性

java - 数据绑定(bind)到 Spring MVC 中的下拉框

java - 是否可以将 Spring 模型对象作为 Spring 形式的值?

java - 如何使用 Spring Data REST 按类型获取所有投影

spring - Nginx 静态服务来自 spring boot war

java - 在插件中和通过 Tomcat 覆盖 Spring Boot application.properties 属性?

java - 如何使用 MySql 维护 Hibernate ID 序列?

spring - Spring boot Data JPA是否在内部使用hibernate来实现?