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

RNJ*_*RNJ 27 java sql jpa named-query

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

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

我尝试添加%,就像在普通SQL中那样,但是会编译异常.

任何指针非常感谢!

谢谢

ese*_*sej 51

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

如:

String city = "needle";
query.setParamter("city", "%" + city + "%");
Run Code Online (Sandbox Code Playgroud)


小智 8

您也可以使用CONCAT功能

@NamedQuery(name = "Place.getPlaceForCityAndCountryName",
     query = "SELECT p FROM Place p WHERE " +
        "lower(p.city) like CONCAT(:city,'%')");
Run Code Online (Sandbox Code Playgroud)


小智 6

@Query("select c from Curso c where c.descripcion like CONCAT(:descripcion,'%')")

List<Curso> findByDescripcionIgnoreCase(@Param("descripcion") String descripcion);
Run Code Online (Sandbox Code Playgroud)