Привязка списка целых чисел в предложении IN с использованием Cayenne
-
21-08-2019 - |
Вопрос
Я пытаюсь связать список целых чисел с предложением SQLTemplate IN следующим образом:
SELECT * FROM table1 WHERE id IN ( #bind($idList) );
У меня есть строка идентификаторов:
idList = "1, 2, 3, 4";
Я не могу заставить привязку успешно работать, она не возвращает значений, когда я передаю строку в виде списка идентификаторов для проверки.
Мне приходится использовать конкатенацию строк для запуска этого (не идеально).
Есть какие-нибудь идеи относительно того, как я мог бы заставить его правильно привязаться?
Заранее благодарю.
(Я использую Java / Cayenne / Postgres и запускаю запрос с idList, переданным в качестве параметра, это упрощенный пример, а не фактический sql, который я запускаю).
Обновить Я понял, как это сделать.Ответьте ниже.
Решение
Хорошо, я узнал, как это сделать, как только опубликовал вопрос.
Вместо того, чтобы иметь строку, используйте список целых чисел следующим образом:
List<Integer> ids = {1,2,3,4,5} (pseudocode)
И чтобы выполнить привязку, вам нужно следующее:
SELECT * FROM table1 WHERE id IN ( #bind($idList, 'INTEGER') );
Затем передайте параметр как обычно, и он заработает.