在where子句中使用like命名查询

是否可以在命名查询的where子句中使用like? 我正在努力做以下事情,但我得到例外

@NamedQuery(name = "Place.getPlaceForCityAndCountryName", query = "SELECT p FROM Place p WHERE " + "lower(p.city) like :city and " + "lower(p.countryName) like :countryName"); 

我尝试添加%,就像在普通SQL中一样,但是会编译exception。

任何指针非常感谢!

谢谢

您不能在NamedQuery拥有%,但您可以在分配参数的值中使用它。

如:

 String city = "needle"; query.setParamter("city", "%" + city + "%"); 

您也可以使用CONCATfunction

 @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 findByDescripcionIgnoreCase(@Param("descripcion") String descripcion);