Spring Динамический запрос данных

Я пытаюсь настроить динамический запрос с использованием данных spring, в основном у меня есть массив с множеством характеристик, и мне нужно собрать запрос на основе этих характеристик, что-то вроде "WHERE character = A И характеристика = B И характеристика = 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);

Ответ 1

Да. @Query поддерживает pageable.. и да есть другой способ выполнить это.

Вы можете посмотреть, как построить запрос с критериями, которые позволяют добавлять AND/OR, где условия динамически. Я действительно использую querydsl для облегчения моего развития.

В этом посте вы можете найти хорошее объяснение кабины: http://spring.io/blog/2011/04/26/advanced-spring-data-jpa-specifications-and-querydsl/

Вначале это может показаться более сложным, использование этой функции сделает ваш код более согласованным с возрастающей сложностью