пружинные данные JPA CriteriaBuilder.isNull возвращают синтаксическую ошибку - PullRequest
0 голосов
/ 06 декабря 2018

Спецификация:

public Predicate toPredicate(Root<Hotel> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
    Predicate predicate = root.get("starRating").in(s);
            if (unrated) {
                predicate = cb.or(predicate, cb.isNull(root.get("starRating")));
            }
     return predicate;
}

Где s - это Set.

Журнал SQL: Hibernate: select hotel0_.hotel_id as hotel_id1_16_, hotel0_.star_rating as star_ra13_16_ where hotel0_.active=? and (hotel0_.star_rating in () or hotel0_.star_rating is null) order by lower(hotel0_.hotel_name) asc

Ошибка: ERROR 6828 --- [nio-8080-exec-1] o.h.engine.jdbc.spi.SqlExceptionHelper : ERROR: syntax error at or near ")"

Исключение: org.springframework.dao.InvalidDataAccessResourceUsageException: could not extract ResultSet; SQL [n/a]; nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSet

Что мне здесь не хватает?

1 Ответ

0 голосов
/ 06 декабря 2018

Проблема в вашем запросе здесь: hotel0_.star_rating in ().Поставьте пустой чек на множестве s до этой точки:

if(s != null && !s.isEmpty()){
  predicate = root.get("starRating").in(s);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...