Je voudrais écrire une requête similaire JpaRepository
mais elle ne renvoie rien:
LIKE '%place%'
-ça ne fonctionne pas.
LIKE 'place'
fonctionne parfaitement.
Voici mon code:
@Repository("registerUserRepository")
public interface RegisterUserRepository extendsJpaRepository<Registration,Long> {
@Query("Select c from Registration c where c.place like :place")
List<Registration> findByPlaceContaining(@Param("place")String place);
}
java
jpa
spring-data-jpa
sudeep cv
la source
la source
like '%:place%'
avec'
et il n'y avait aucun résultat, car Hibernate ajoute des'
s aux chaînes par lui-même.Vous n'avez pas du tout besoin de l'
@Query
annotation.Vous pouvez simplement utiliser ce qui suit
la source
@Query()
c'est un must, non? Avec cette approche, je devrais faire en sorteor
que ce n'est pas vraiment une solution bien adaptée à ce cas:findByField1OrField2Containg(String phraseForField1, String phraseForField2)
Vous pouvez également implémenter les requêtes similaires à l'aide du mot clé pris en charge par Spring Data JPA "Containing" .
la source
Pour votre cas, vous pouvez utiliser directement les méthodes JPA. C'est comme ci-dessous:
Contenant: sélectionnez ... comme%: place%
ici, IgnoreCase vous aidera à rechercher l'élément en ignorant la casse.
Utilisation de @Query dans JPQL :
Voici quelques méthodes associées:
Comme
findByPlaceLike
… Où x.place comme? 1
Commençant par
findByPlaceStartingWith
… Où x.place comme? 1 (paramètre lié avec% ajouté)
EndingWith
findByPlaceEndingWith
… Où x.place comme? 1 (paramètre lié avec% en préfixe)
Contenant
findByPlaceContaining
… Où x.place comme? 1 (paramètre lié enveloppé en%)
Plus d'infos, voir ce lien , ce lien et ceci
J'espère que ceci vous aidera :)
la source
Vous pouvez avoir une alternative d'utiliser des espaces réservés comme:
la source
Essaye ça.
la source
something=:place
etanother like %:place%
en question.quand appel funtion, j'utilise:
findByPlaceContaining("%" + place);
ou:
findByPlaceContaining(place + "%");
ou:
findByPlaceContaining("%" + place + "%");
la source
la réponse sera exactement
la source
Solution trouvée sans
@Query
(en fait, j'ai essayé laquelle est "acceptée". Cependant, cela n'a pas fonctionné).Doit revenir
Page<Entity>
au lieu deList<Entity>
:IgnoreCase
une partie était essentielle pour y parvenir!la source