Подтвердить что ты не робот

Именованный запрос с аналогичным предложением where where

Возможно ли иметь подобное в предложении where в именованном запросе? Я пытаюсь сделать следующее, но получаю исключения

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

Я попробовал добавить%, как это было бы в обычном SQL, но получить компиляцию исключений.

Любые указатели очень благодарны!

Спасибо

4b9b3361

Ответ 1

У вас не может быть% в NamedQuery, но вы можете получить его в значении, которое вы назначили параметру.

Как в:

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

Ответ 2

Вы также можете использовать функцию CONCAT

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

Ответ 3

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

List<Curso> findByDescripcionIgnoreCase(@Param("descripcion") String descripcion);