Encadernação uma lista de números inteiros em uma cláusula IN usando Cayenne
-
21-08-2019 - |
Pergunta
Estou tentando ligar uma lista de números inteiros em uma cláusula SQLTemplate IN assim:
SELECT * FROM table1 WHERE id IN ( #bind($idList) );
Eu tenho uma série de ids:
idList = "1, 2, 3, 4";
Não consigo fazer a ligação ao trabalho com êxito, ele retorna nenhum valor quando eu passar na seqüência como uma lista de ids para verificar.
Eu estou tendo a concatenação uso para executar este (não ideal).
Todas as idéias de como eu poderia obtê-lo para vincular adequadamente?
Agradecemos antecipadamente.
(estou usando Java / Cayenne / Postgres, e executar a consulta com o idlist passado como um parâmetro, este é um exemplo simplificado, não o SQL real Estou correndo).
Atualizar eu descobri como fazê-lo. Responda abaixo.
Solução
OK, eu descobri como fazê-lo assim que eu postei a pergunta.
Em vez de ter uma seqüência, use uma lista de inteiros assim:
List<Integer> ids = {1,2,3,4,5} (pseudocode)
E para fazer a ligação, é necessário o seguinte:
SELECT * FROM table1 WHERE id IN ( #bind($idList, 'INTEGER') );
Em seguida, passe no parâmetro como de costume e ele vai funcionar.