Привязка списка целых чисел в предложении 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') );

Затем передайте параметр как обычно, и он будет работать.

Другие вопросы по тегам