java - 如何使用 spring-data-jpa 2.1 实现长/复杂查询

标签 java spring hibernate spring-boot spring-data-jpa

我需要一些关于实现 spring JPA 查询的建议。由于输入长度,我的查询很复杂。
作为我的输入:

  • 15 条件 - 如果不为空则检查是否相等;
  • 2 条件 - 检查 if not null
  • 此外,输出必须是可分页的。

我知道这可以通过使用标准的 PagingAndSortingRepository 来解决,例如:

Page<A> findAllByParam1AndParam2AndParam3Between...(@Nullable String param1, @Nullable String param2, @Nullable Integer param3,...) 

但是看看我输入的这个解决方案有多长看起来不清楚,我不认为具有这么多参数的方法是一个好的解决方案。 我也在考虑 findAll by Example,但这是支持相等性,而不是 between 条件。

还有其他选择吗?
唯一的方法是使用 CriteriaBuilder?

构建自定义查询

最佳答案

派生查询,即那些从方法名称派生实际查询的查询,对于如此长或复杂的查询来说是错误的工具,因为生成的名称变得不可用。

您应该考虑的替代方案是

关于java - 如何使用 spring-data-jpa 2.1 实现长/复杂查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54564017/

相关文章:

java - android-BroadcastReceiver-java.lang.StackOverflowError

java - RMI 请求是在服务器端按进程或线程处理的吗?

java - Groovy - 集成测试

java - 如何根据 JPA Web API 中的类型将 JSON 数据转换为两种 JSON 数组格式

java - 如何在java代码块(jsp文件)中访问spring资源包键/值

java - Build.gradle 给出 java.lang.NoClassDefFoundError

java - Spring MVC 无法转换类型为 'java.lang.Integer' 的属性值

java - 如何通过 Spring 框架实例化使用泛型的对象?

java - Hibernate 按关联(可选)字段排序

java - 组织.hibernate.SessionException : Session is closed