Encadernação uma lista de números inteiros em uma cláusula IN usando Cayenne

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

  •  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.

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top