2009-02-05 4 views
2

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

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

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

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

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

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

Любые идеи относительно того, как я могу заставить его правильно связываться?

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

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

UPDATE Я понял, как это сделать. Ответ ниже.

ответ

2

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

Вместо того, чтобы иметь строку, используйте список Целые так:

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

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

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

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