【问题标题】:Spring @Query with principal and ternary operator带有主运算符和三元运算符的 Spring @Query
【发布时间】: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


【解决方案1】:

如果将 0 替换为 null 似乎会起作用

【讨论】:

    猜你喜欢
    • 2016-02-12
    • 2013-06-28
    • 1970-01-01
    • 1970-01-01
    • 2023-02-03
    • 1970-01-01
    • 2021-08-01
    • 1970-01-01
    • 2020-04-14
    相关资源
    最近更新 更多