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

Paw*_*ł S 10 java spring hibernate spring-data-jpa spring-boot

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

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

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

Page<A> findAllByParam1AndParam2AndParam3Between...(@Nullable String param1, @Nullable String param2, @Nullable Integer param3,...) 
Run Code Online (Sandbox Code Playgroud)

但看看我的输入是多长时间,这个解决方案看起来不清楚,我认为具有这么多参数的方法不是一个好的解决方案。我也在考虑findAllExample ,但这是支持平等,而不是条件之间。

还有其他选择吗?
唯一的方法是使用CriteriaBuilder构建自定义查询?

Jen*_*der 8

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

您应该考虑的替代方案是