Ho una query denominata JPQL che accetta un parametro List
. Sto utilizzando il parametro in un IN
frase:È possibile passare e testare un elenco vuoto in JPA?
...WHERE x.id IN :list
Mi piacerebbe fare qualcosa come il seguente, ma la sintassi a quanto pare non me lo permette:
...WHERE :list IS EMPTY OR x.id IN :list
neppure:
...WHERE SIZE(:list) = 0 OR x.id IN :list
È quello che sto cercando di fare impossibile in una query denominata JPA 2.0? So come farlo tramite l'API dei criteri o usando semplici stringhe JPQL.
Hai ragione, naturalmente. Speravo di spostare il codice condizionale nella query stessa, ma questo non è supportato dal JPN BNF. –
Offrirò nella mia debole difesa che il seguente tipo di SQL (non JPQL) è spesso visto in scenari generati: 'SELECT x FROM y WHERE 1 = 1;' (cioè qualsiasi cosa sta assemblando la clausola 'WHERE' a volte fa in modo che '1 = 1' si trova nella clausola' WHERE', quindi l'assembly dinamico non deve fare il tipo di logica if/then di cui si sta parlando). Detto questo, non penso di poterla fare franca con JPQL. Grazie. –