Spring @Query с принципалом и тернарным оператором

@Query("select p from Person p where p.id=?#{principal=='anonymousUser'?0:principal.id})")
public Person getCurrentUser();

Этот метод предназначен для возврата текущего пользователя/человека или ничего (в базе данных нет пользователя с id=0), если пользователь анонимный. И в первом случае работает нормально, но при анонимности пользователя выдает ошибку:

org.hibernate.QueryException: установлены не все именованные параметры: [1] [выберите p из Person p, где p.id=?1)]

Кажется, теперь он ожидает какие-то параметры, но почему? Разве запрос не должен быть

select p from Person p where p.id=0

?


person darwinjob    schedule 18.03.2016    source источник
comment
Кажется, это сработает, если вы замените 0 на null   -  person Muhammad Hewedy    schedule 26.03.2016
comment
Подтверждено, спасибо! Рабочий код @Query("select p from Person p where p.id=?#{principal=='anonymousUser'?null:principal.id})") public Person getCurrentUser();   -  person darwinjob    schedule 03.04.2016
comment
Я добавил это как ответ, чтобы другие могли его использовать.   -  person Muhammad Hewedy    schedule 03.04.2016


Ответы (1)


Кажется, это сработает, если вы замените 0 на ноль

person Muhammad Hewedy    schedule 03.04.2016