Est-il possible d'avoir un like dans une clause where dans une requête nommée? J'essaie de faire ce qui suit mais j'obtiens des exceptions
@NamedQuery(name = "Place.getPlaceForCityAndCountryName",
query = "SELECT p FROM Place p WHERE " +
"lower(p.city) like :city and " +
"lower(p.countryName) like :countryName");
J'ai essayé d'ajouter% comme vous le feriez dans SQL normal mais j'obtiens la compilation d'exceptions.
Tous les pointeurs grandement appréciés!
Merci
Vous ne pouvez pas avoir le% dans le NamedQuery
, mais vous pouvez l'avoir dans la valeur que vous affectez au paramètre.
Un péché:
String city = "needle";
query.setParamter("city", "%" + city + "%");
Vous pouvez également utiliser la fonction CONCAT
@NamedQuery(name = "Place.getPlaceForCityAndCountryName",
query = "SELECT p FROM Place p WHERE " +
"lower(p.city) like CONCAT(:city,'%')");
@Query("select c from Curso c where c.descripcion like CONCAT(:descripcion,'%')")
List<Curso> findByDescripcionIgnoreCase(@Param("descripcion") String descripcion);