Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Função JPQL LOWER na expressão IN


O JPQL está funcionando conforme projetado. Está interpretando corretamente, é assim que a função e o parâmetro são definidos em seu código.

Para obter o resultado desejado com o Oracle, você pode usar o tipo de coleção Oracle embutido ODCIVARCHAR2LIST . Então o JPQL ficará como abaixo:
SELECT e 
FROM   myentity e 
WHERE  Lower(e.myattribute) IN 
       ( 
              SELECT Lower(column_value) 
              FROM   table(sys.odcivarchar2list(?1)))

OBSERVAÇÃO: Para Oracle 12.2+, você não precisa de table função, então abaixo também funcionará:
SELECT e 
FROM   myentity e 
WHERE  Lower(e.myattribute) IN 
       ( 
              SELECT Lower(column_value) 
              FROM   sys.odcivarchar2list(?1))