问题 Spring Data动态查询


我正在尝试使用spring数据设置动态查询,基本上我有一堆具有一系列特征的数组,我需要根据这些特征组装查询,几乎就像“WHERE特征= A AND特征= B AND特征= C“但特征量可能不同。

我注意到我可以使用@Query注释但是可以将@Query的结果分页吗?

有没有其他方法可以实现这一目标?

Page<Recipe> findDistinctByNameContainingAndOrganizationAndCharacteristicsInOrIngredientsContainingAndOrganizationAndCharacteristicsInOrDescriptionContainingAndOrganizationAndCharacteristicsInAllIgnoreCase(
        String name, Organization organization1, List<Characteristic> characteristic1,
        String ingredients, Organization organization2, List<Characteristic> characteristic2,
        String description, Organization organization3, List<Characteristic> characteristic3,
        Pageable pageable);

3751
2018-04-11 16:02


起源

是的@Query支持Pageable - Leonard Brünings
尝试使用QueryDSL。例如,在这种情况下,您可以为您的存储库或服务发送任何谓词。 querydsl.com - Tiarê Balbi
对于像这样的方法声明,我肯定会考虑其他选项 @Query 和奎里斯。由于其长名称和参数列表,此方法实际上无法使用。 - Oliver Gierke


答案:


是。 @Query 支持可分页..是的还有另一种方法来实现这一目标。

您可以查看使用条件构建查询,以便在动态条件下添加AND / OR。我实际上使用querydsl来促进我的开发。

在这篇文章中你可以找到一个很好的解释: http://spring.io/blog/2011/04/26/advanced-spring-data-jpa-specifications-and-querydsl/

尽管开始时看起来可能更复杂,但使用此功能可以使您的代码更加符合日益增加的复杂性


9
2018-04-11 17:27