Estou tentando escrever uma consulta JPQL com uma cláusula like:
LIKE '%:code%'
Eu gostaria de ter code = 4 e encontrar
455 554 646 ...
Eu não posso passar :code = '%value%'
namedQuery.setParameter("%" + this.value + "%");
porque em outro lugar não preciso :value
embrulhado pelos %
chars. Qualquer ajuda?
Respostas:
Se você fizer
e então faça
Então o valor permanece livre do sinal '%'. Se você precisar usá-lo em outro lugar na mesma consulta, simplesmente use outro nome de parâmetro diferente de 'código'.
fonte
"%" + this.value + "%"
é o que escapou.Eu não uso parâmetros nomeados para todas as consultas. Por exemplo, é incomum usar parâmetros nomeados em JpaRepository .
Para contornar o problema, uso a função JPQL CONCAT (este emulador de código começa com ):
Encontrei essa técnica em documentos excelentes: http://openjpa.apache.org/builds/1.0.1/apache-openjpa-1.0.1/docs/manual/jpa_overview_query.html
fonte
Você pode usar a função JPA LOCATE .
Para sua informação: a documentação do meu principal hit do Google teve os parâmetros invertidos.
fonte
Não sei se estou atrasado ou fora do escopo, mas na minha opinião eu poderia fazer assim:
fonte
Existe um bom método like () na API de critérios JPA. Tente usar isso, espero que ajude.
fonte
fonte
Apenas deixe de fora o ''
fonte
Use
JpaRepository
ouCrudRepository
como interface de repositório:fonte