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