我有 PersonEntity
与 AddressEntity
的 oneToMany
关系 .
另外,我已经定义了 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有关的解决方法?