我有 PersonEntityAddressEntityoneToMany 关系 .

另外,我已经定义了 Specification<PersonEntity>Pageable 个对象 . 我的可分页对象按 addresses.city 排序 .

没有排序我有适当的结果,但如果按城市排序我在返回页面中有重复 . 如果我添加到我的规范 query.distinct(true) 它在运行时失败,因为 sort by 不在选择结果中 .

基本上我只需要在第二个表(地址)中加入第一个结果或以某种方式删除重复项 . 怎么做?

EDIT:

personRepository.findAll(specification, pageable);
// specification contains only (root, query, builder) -> builder.equal(root.get(PersonEntity_.orgId), orgId)
// pageable - sort asc, addresses.city, page 0, pagesize 100

当然问题是在我按地址列表排序之后,当Person有多个地址时,它将执行LEFT OUTER JOIN,这会产生两个结果 .

EDIT2:

github中有一个未解决的问题https://github.com/querydsl/querydsl/issues/1150我们是否有与jparepositories有关的解决方法?