Hibernate IN запрос с двумя параметрами - PullRequest
1 голос
/ 20 мая 2011

Мне нужно создать запрос гибернации, который бы делал что-то вроде этого:

select p from Person p where (p.name, p.surname) in (('Peter', 'Black'), ('Thomas', 'Peterson'), ('Julia', 'Cook'))

Длина списка имени / фамилии не определена заранее, а имя и фамилия могут содержать любые символы (имя и фамилия используются только для иллюстрации)

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

решений, которые не приемлемы:

(p.name || '--' || p.surname) in (:mergedNameSurname)

решение, которое я бы хотел избежать:

((p.name = :name1 and p.surname = :surname1) or (p.name = :name2 and p.surname = :surname2) ...)

У вас есть идея, как это можно сделать?

1 Ответ

1 голос
/ 20 мая 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...