根据这个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:意外的AST节点:?靠近第1行
我尝试了不同的组合,有没有?,',:,#但仍然没有运气。我怀疑由于@Query的限制或者我误解了语法,它要么不可能。任何帮助表示赞赏。