Привязка списка целых чисел в предложении IN с использованием Cayenne

StackOverflow https://stackoverflow.com/questions/514551

  •  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') );

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top