【发布时间】:2016-07-05 07:56:30
【问题描述】:
@Query("select p from Person p where p.id=?#{principal=='anonymousUser'?0:principal.id})")
public Person getCurrentUser();
如果用户是匿名的,此方法旨在返回当前用户/人或不返回任何内容(数据库中没有 id=0 的用户)。在第一种情况下它工作得很好,但是当用户是匿名的时候它会给出一个错误:
org.hibernate.QueryException:并非所有命名参数都已设置: [1] [select p from Person p where p.id=?1)]
现在它似乎需要一些参数,但为什么呢?查询不应该是
select p from Person p where p.id=0
?
【问题讨论】:
-
如果您将
0替换为null似乎会起作用 -
确认,谢谢!工作代码是
@Query("select p from Person p where p.id=?#{principal=='anonymousUser'?null:principal.id})") public Person getCurrentUser(); -
我添加了它作为其他人使用它的答案。
标签: spring-boot spring-data-jpa spring-el ternary