Я пишу приложение, используя Spring Boot, Spring Data. И я пытаюсь реализовать функцию фильтрации на основе различных параметров фильтра.
Используя запросы Spring Data, мы можем определить довольно сложную логику, например:
@Query("SELECT u FROM User u WHERE u.status = 1")
Collection<User> findAllActiveUsers();
Но что, если числогде пункты, порядок, лимит, количество различных параметров неизвестны, пока мы не сделаем фактический запрос фильтра, который может быть довольно сложным.
Прямо сейчас параметры фильтра отправляются в объекте json, который я анализирую и извлекаю, иРезультат sql запроса может быть примерно таким:
SELECT * FROM table
WHERE field1 != `value1` and (field1 != ` value2 `OR (field1 = `value3` AND filed2 < 3))
AND field2 != 99
Можно ли генерировать динамически сложные запросы с неопределенным (до фактического запроса фильтра, во время выполнения) количеством параметров, где предложения и другие вещи?