Paramètre dans la clause like JPQL

J’essaie d’écrire une requête JPQL avec une clause similaire:

LIKE '%:code%' 

Je voudrais avoir le code = 4 et trouver

 455
 554
 646
 ...

Je ne peux pas passer :code = '%value%'

 namedQuery.setParameter("%" + this.value + "%"); 

car à un autre endroit, j’ai besoin de :value non enveloppée par les caractères % . De l’aide?

Si tu fais

 LIKE :code 

et ensuite faire

 namedQuery.setParameter("code", "%" + this.value + "%"); 

Alors la valeur rest libre du signe ‘%’. Si vous devez l’utiliser ailleurs dans la même requête, utilisez simplement un autre nom de paramètre que «code».

Je n’utilise pas de parameters nommés pour toutes les requêtes. Par exemple, il est inhabituel d’utiliser des parameters nommés dans JpaRepository .

Pour contourner ce problème , j’utilise la fonction JPQL CONCAT (ce code commence par émuler):

 @Repository public interface BranchRepository extends JpaRepository { private static final Ssortingng QUERY = "select b from Branch b" + " left join b.filial f" + " where f.id = ?1 and b.id like CONCAT(?2, '%')"; @Query(QUERY) List findByFilialAndBranchLike(Ssortingng filialId, Ssortingng branchCode); } 

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