【发布时间】:2019-02-02 19:18:05
【问题描述】:
我正在尝试通过 QueryDSL 的 Overrided 方法使用 @Query,但是当我这样做时,它忽略了我提供的谓词例如http://localhost:8080/orders?state=Texas
我需要 @Query 的原因是应用基于身份验证主体的安全性,例如
@Query("select o from Orders o where ?#{principal.username} = o.username")
存储库的完整代码:
public interface OrderRepository extends JpaRepository<Order, Integer>, QuerydslPredicateExecutor<Order>{
@Override
@Query("select o from Orders o where ?#{principal.username} = o.username")
Page<Order> findAll(Predicate predicate, Pageable pageable);
}
【问题讨论】:
-
你只有一个谓词值?我发现您的代码中有一些错误!
-
你好朋友,像这样的错误?不,我有多个谓词,实际上我必须向 ui 设计团队提供该微服务,他们将根据他们的需要使用它,并且不希望我为他们的需要编写任何固定方法,他们需要对 API 开放手,所以他们可以根据自己的要求进行查询。
标签: spring-boot spring-security spring-data-jpa querydsl