Spring 数据:使用 QueryDSL 谓词查询 DTO

Spring Data: Query DTOs with QueryDSL predicates

我正在对 query/filter 个实体(文档)使用 QueryDSL:

   public interface DocumentRepository extends PagingAndSortingRepository<Document, Long>, QueryDslPredicateExecutor<Document>

然后我构建 QueryDSL 谓词并使用方法 findAll 来过滤结果:

   Predicate predicate = myBuilder.buildPredicate(myUserFilterObject)
   Page<Document> page = documentRepository.findAll(predicate, pageable)

除了我需要避免 N+1 选择 (JPA) 之外,它运行良好。有没有什么方法可以查询 DTO 而不是实体(但仍然使用 QueryDSL 谓词)或者是否可以在这里应用 EntityGraphs(对我不起作用)?

从 Spring Data JPA 2.1 开始,您可以使用 @EntityGraph 注释。

public interface DocumentRepository extends PagingAndSortingRepository<Document, Long>, QueryDslPredicateExecutor<Document> {
    @EntityGraph(attributePaths = { "name_of_collection_to_load" })
    Page<Document> findAll(com.querydsl.core.types.Predicate predicate, Pageable pageable)
}