JPQL fonctionne comme prévu. C'est bien interprété, c'est ainsi que la fonction et le paramètre sont définis dans votre code.
Pour obtenir le résultat souhaité avec Oracle, vous pouvez utiliser le type de collection Oracle intégré ODCIVARCHAR2LIST
. Donc JPQL ressemblera à ci-dessous :
SELECT e
FROM myentity e
WHERE Lower(e.myattribute) IN
(
SELECT Lower(column_value)
FROM table(sys.odcivarchar2list(?1)))
REMARQUE : Pour Oracle 12.2+, vous n'avez pas besoin de table
fonction, donc ci-dessous fonctionnera aussi :
SELECT e
FROM myentity e
WHERE Lower(e.myattribute) IN
(
SELECT Lower(column_value)
FROM sys.odcivarchar2list(?1))