Spring @Query with principal and ternary operator

Spring @Query with principal and ternary operator

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

此方法旨在 return 当前 user/person 或什么都没有(数据库中没有 id=0 的用户)如果用户是匿名的。在第一种情况下它工作正常,但是当用户是匿名用户时它会给出错误:

org.hibernate.QueryException: Not all named parameters have been set: [1] [select p from Person p where p.id=?1)]

现在似乎需要一些参数,但为什么呢?查询不应该是

select p from Person p where p.id=0

?

好像把0换成null就可以了