В ОБЛАСТИ, используя createNativeQuery - PullRequest
0 голосов
/ 04 мая 2018

Как написать предложение IN, используя createNativeQuery?

* ** 1003 тысяча два * Пример
codeList = "123 ,456";

Тогда я получаю codeList вот так:

CODE IN (:codeList)

Но я не могу получить данные. Как правильно написать предложение IN с помощью createNativeQuery?

1 Ответ

0 голосов
/ 04 мая 2018

IN предложение принимает Список , а не Строка , поэтому вам нужно преобразовать эту строку в список, подобный этому, и затем установить параметр

List<Integer> listCode = Stream.of(codeList.split("\\s*,\\s*"))
       .map(Integer::valueOf)
       .collect(toList());// this will return a list [123, 456]
query.setParameter("codeList", listCode);

Теперь о вашей проблеме

При попытке использовать:

query.setParameter("codeList", "123 ,456");

Ваш запрос конвертируется так:

CODE IN ('123 ,456')
         ^________^-----------------this treated as a String not as a List

Есть решение с объединением этого параметра с запросом, но я не советую с этим решением!

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