J'essaye d'écrire une requête JPQL avec une clause similaire:
LIKE '%:code%'
Je voudrais avoir code = 4 et trouver
455 554 646 ...
Je ne peux pas passer :code = '%value%'
namedQuery.setParameter("%" + this.value + "%");
parce que dans un autre endroit, je n'ai :value
pas besoin d' être enveloppé par les %
caractères. De l'aide?
Réponses:
Si tu fais
puis fais
La valeur reste alors libre du signe «%». Si vous avez besoin de l'utiliser ailleurs dans la même requête, utilisez simplement un autre nom de paramètre autre que «code».
la source
"%" + this.value + "%"
ce qui s'est échappé.Je n'utilise pas de paramètres nommés pour toutes les requêtes. Par exemple, il est inhabituel d'utiliser des paramètres nommés dans JpaRepository .
Pour contourner le problème , j'utilise la fonction JPQL CONCAT (cette émulation de code commence par ):
J'ai trouvé cette technique dans d'excellents documents: http://openjpa.apache.org/builds/1.0.1/apache-openjpa-1.0.1/docs/manual/jpa_overview_query.html
la source
Vous pouvez utiliser la fonction JPA LOCATE .
FYI: La documentation sur mon top google hit avait les paramètres inversés.
la source
Je ne sais pas si je suis en retard ou hors de portée mais à mon avis, je pourrais le faire comme:
la source
Il existe une belle méthode like () dans l'API de critères JPA. Essayez de l'utiliser, j'espère que cela vous aidera.
la source
la source
Laissez de côté le ''
la source
Utilisez
JpaRepository
ouCrudRepository
comme interface de référentiel:la source