Привязка списка целых чисел в предложении IN с использованием Cayenne - PullRequest
2 голосов
/ 05 февраля 2009

Я пытаюсь связать список целых чисел в предложении SQLTemplate IN следующим образом:

SELECT * FROM table1 WHERE id IN ( #bind($idList) );

У меня есть строка идентификаторов:

idList = "1, 2, 3, 4";

Я не могу заставить привязку работать успешно, она не возвращает значений, когда я передаю строку в виде списка идентификаторов для проверки.

Мне нужно использовать конкатенацию строк для запуска этого (не идеально).

Какие-нибудь идеи относительно того, как я мог заставить это связываться должным образом?

Заранее спасибо.

(я использую Java / Cayenne / Postgres и запускаю запрос с idList, переданным в качестве параметра, это упрощенный пример, а не фактический sql, который я выполняю).

ОБНОВЛЕНИЕ Я понял, как это сделать. Ответ ниже.

1 Ответ

2 голосов
/ 05 февраля 2009

ОК, я узнал, как это сделать, как только отправил вопрос.

Вместо строки используйте список целых чисел, например:

List<Integer> ids = {1,2,3,4,5} (pseudocode) 

И чтобы сделать привязку, вам нужно следующее:

SELECT * FROM table1 WHERE id IN ( #bind($idList, 'INTEGER') );

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

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