2013-03-05 2 views
4
Query query = em.createQuery(
     "select count(u) from User u where (u.id=:a) and (u.photo=:b)") 
     .setParameter("a",userId).setParameter("b",null); 

В моем случае я хочу проверить, загружена ли фотография пользователя или нет (значение фото равно null или нет). Я попытался выполнить запрос.JPA: Как проверить значение параметра NULL-запроса с помощью HQL?

ответ

6

См. example in Hibernate documentation.

Вы должны проверить, является параметр является недействительным:

Query query = em.createQuery(
     "select count(u) from User u where (u.id=:userId) and (u.photo is null)") 
     .setParameter("userId",userId); 
2

Если вы стремитесь в обобщающих «Ъ», так что метод может принимать либо значение, или нуль, это обычно работает:

Query q = em.createQuery (
    "SELECT ... WHERE ... (:b IS NULL AND u.photo IS NULL OR u.photo = :b)" 
); 
q.setParameter ("b", methodValue); // can be null 
... 

Существует такой помощник, который использует этот подход here (см. ПараметризованныйWithNullHql()).

Смежные вопросы