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