2

根据这个https://spring.io/blog/2014/07/15/spel-support-in-spring-data-jpa-query-definitions我应该能够构造一个条件查询:

@Query("select o from BusinessObject o where o.owner.emailAddress like "+
  "?#{hasRole('ROLE_ADMIN') ? '%' : principal.emailAddress}")
List<BusinessObject> findBusinessObjectsForCurrentUser();

我想要实现的是更改查询的大部分。这是一个完全合成的例子,但它展示了这个想法:

@Query("select p from Project p where " + "?#{hasRole('ROLE_ADMIN') ? 'p.status='PRIVATE'':p.'status='PUBLIC''}")
public Page<Project> findAll(Pageable pageable);

上面的查询给出了 org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected AST node: ? 1号线附近

我尝试了有和没有 ?、'、:、# 的不同组合,但仍然没有运气。我怀疑由于@Query 的限制而不可能,或者我误解了语法。任何帮助表示赞赏。

4

0 回答 0