Spring Data:使用QueryDSL谓词查询DTO

时间:2017-11-29 08:48:02

标签: java spring-data-jpa querydsl dto entitygraph

我使用QueryDSL查询/过滤实体(文档):

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

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

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

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

1 个答案:

答案 0 :(得分:0)

从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)
}