Как сделать выборку по части выражения после «ГДЕ» с использованием CriteriaApi или JPA - PullRequest
0 голосов
/ 19 апреля 2020

Как я могу сделать выборку по определенному полю, используя любое возможное выражение, используя Criteria API или JPA?
Например, у меня есть поле "цена" в моей таблице.
Поэтому я хочу реализовать возможность в Пользовательский интерфейс для ввода: "> 10 и <50" и получить все соответствующие результаты <br>"> = 20" и получить все соответствующие результаты
"! = 10" и получить все соответствующие результаты
Или в текстовом поле:
"как% substring%"
И так далее
Возможно ли это?

1 Ответ

1 голос
/ 19 апреля 2020

Конечно, это возможно, в зависимости от того, насколько сложными вы хотите, чтобы эти выражения были допустимыми, это может быть нелегко или небезопасно.

У вас в основном есть два варианта:

  1. Вы анализируете выражение и затем используете проанализированный результат для построения ваших критериев.

    Как Абина sh Гхо sh отметил: Вы можете сделать это в виде Specification конструктор для приятного взаимодействия с Spring Data JPA.

  2. Это не рекомендуется использовать, я помещаю его в основном здесь, чтобы я мог отметить его как небезопасный Вы можете собрать строку SQL или JPQL и просто использовать ее как запрос. Это проще, потому что JPA сделает анализ для вас. Это откроет ваше приложение для SQL инъекции (или JPQL-инъекции, я думаю). Так что не используйте это.

...