Encuadernación una lista de números enteros en una cláusula IN usando Cayenne

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

  •  21-08-2019
  •  | 
  •  

Pregunta

Estoy tratando de enlazar una lista de números enteros en una SQLTemplate EN cláusula de este modo:

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

Tengo una cadena de identificadores:

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

No puedo conseguir la unen para trabajar con éxito, devuelve ningún valor cuando paso en la cadena como una lista de identificadores de comprobar.

Estoy tener que utilizar la concatenación de cadenas para ejecutar este (no ideal).

alguna idea de cómo podría conseguir que se unen correctamente?

Gracias de antemano.

(estoy usando Java / Cayenne / Postgres, y ejecutar la consulta con el idList pasa como un parámetro, esto es un ejemplo simplificado, no el SQL real Estoy corriendo).

Actualizar Me di cuenta de cómo hacerlo. Responder a continuación.

¿Fue útil?

Solución

Bueno, he encontrado la manera de hacerlo tan pronto como he publicado la pregunta.

En lugar de tener una cadena, utilice una lista de números enteros de esta manera:

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

Y para hacer el enlace, se necesita lo siguiente:

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

A continuación, pase en el parámetro como de costumbre y que funcionará.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top