Associazione di un elenco di numeri interi in una clausola IN utilizzando Cayenne
-
21-08-2019 - |
Domanda
Sto cercando di legare una lista di interi in uno SQLTemplate IN clausola in questo modo:
SELECT * FROM table1 WHERE id IN ( #bind($idList) );
Ho una stringa di ID:
idList = "1, 2, 3, 4";
Posso non avere la legano a lavorare con successo, restituisce nessun valore quando passo nella stringa come un elenco di ID per controllare.
Ho dover utilizzare concatenazione di stringhe per eseguire questo (non è l'ideale).
Tutte le idee su come avrei potuto farlo per legare correttamente?
Grazie in anticipo.
(sto usando Java / Cayenne / Postgres, e l'esecuzione della query con l'idlist passato come parametro, questo è un esempio semplificato, non il vero e proprio sql Sono in esecuzione).
Aggiorna ho capito come farlo. Risposta qui sotto.
Soluzione
OK, ho trovato il modo di farlo non appena ho postato la domanda.
Invece di avere una stringa, utilizzare una lista di interi in questo modo:
List<Integer> ids = {1,2,3,4,5} (pseudocode)
E per fare il bind, è necessario quanto segue:
SELECT * FROM table1 WHERE id IN ( #bind($idList, 'INTEGER') );
Poi passa nel parametro come al solito e che funzionerà.