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/
Вначале это может показаться более сложным, использование этой функции сделает ваш код более согласованным с возрастающей сложностью