在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);