如何使用Spring Data JPA 2.1实现长/复杂查询

15

我需要一些关于实现Spring JPA查询的建议。我的查询很复杂,因为输入很长。
我有以下输入:

  • 15个条件-如果不为空,则检查相等性;
  • 2个条件-如果不为空,则检查之间的关系
  • 此外,输出必须可分页。

我知道可以使用标准的PagingAndSortingRepository来解决这个问题:

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

但是看着我输入的长度,这个解决方案似乎不太清晰,而且我认为具有如此多参数的方法不是一个好的解决方案。 我也考虑过使用findAll示例,但这只支持相等条件,而不是between条件。

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

2个回答

14

从方法名中获取实际查询的派生查询并不适用于这种长或复杂的查询,因为生成的名称无法使用。

您应该考虑的替代方案是


1
你有以下几种方法可以实现: 1)使用hql,需要将所有的表都映射为jpa实体 2)使用本地查询,但这会影响应用程序的可移植性。如果您确定应用程序不会迁移到其他数据库,则可以使用此选项 3)使用CriteriaBuilder 编辑-> 发现@Query可用于执行SQL和JPQL。
更多信息请参见以下链接。

https://www.baeldung.com/spring-data-jpa-query

一些Spring开发人员认证书籍中也使用了Query。

希望这有所帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接