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: 予期しない AST ノード: ? を返します。1号線付近

?, ', :, # の有無にかかわらずさまざまな組み合わせを試しましたが、まだうまくいきません。@Query の制限により不可能であるか、構文を誤解していると思われます。どんな助けでも大歓迎です。

4

0 に答える 0