11

我正在尝试使用弹簧数据设置动态查询,基本上我有一个具有一堆特征的数组,我需要根据这些特征组装查询,就像“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);
4

2 回答 2

9

是的。@Query支持分页..是的,还有另一种方法可以实现这一点。

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

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

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

于 2014-04-11T17:27:27.033 回答
0

使用 Spring Data JPA Querydsl。在这里阅读

于 2019-03-15T20:12:50.510 回答