1

我正在使用 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(对我不起作用)?

4

1 回答 1

1

从 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)
}
于 2017-11-29T09:24:48.053 回答