我使用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(对我来说没有用)?
答案 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)
}