Pagination 回购中不相关实体的JPQL按属性排序

Pagination 回购中不相关实体的JPQL按属性排序,pagination,spring-data-jpa,jpql,hibernate-5.x,Pagination,Spring Data Jpa,Jpql,Hibernate 5.x,我有一个需要分页的查询,我想用SpringJPA构建它。我有3个表,详细信息,标题和索赔。标题记录可以有多个(子)详细信息记录,并且具有一个一人映射。声明与标头没有关系,但两者都具有相同值的字段claim_num(不是主键),尽管没有正式约束。Claim还有一个字段“lastName”,我想按它排序。在对Spring的JPareSpositionory进行详细回购扩展的过程中,我使用@Query构建了一个方法,如下所示: @Query("select new MyDTO(d, h

我有一个需要分页的查询,我想用SpringJPA构建它。我有3个表,详细信息,标题和索赔。标题记录可以有多个(子)详细信息记录,并且具有一个一人映射。声明与标头没有关系,但两者都具有相同值的字段claim_num(不是主键),尽管没有正式约束。Claim还有一个字段“lastName”,我想按它排序。在对Spring的JPareSpositionory进行详细回购扩展的过程中,我使用@Query构建了一个方法,如下所示:

        @Query("select new MyDTO(d, h, c) from Detail d, Header h 
    left join Claim c on h.claimNum = c.claimNum")
   Page<MyDTO> getSomeDetails( new Page(0, 10, new Sort("claim.lastName" ) ))
@Query(“从细节d、标题h中选择新的MyDTO(d、h、c
h.claimNum=c.claimNum上的左连接声明c)
页面getSomeDetails(新页面(0,10,新排序(“claim.lastName”))
目标是从header和claim中获取详细信息和值的页面,还需要在结果集中返回这些页面。
我目前的障碍是命令。我得到的是“索赔不是细节属性”。这是有道理的,但细节形式上与标题相关,但声明没有映射任何内容。在细节级别传入页面(Sort())时,生成的SQL如何获得正确的“order by”?感谢阅读,并感谢您的帮助。这是spring引导,但升级到hibernate core 5.1

我发现上面的内容有一些主要问题。特别是行数。最后我对它进行了多次检修,结果发现它很难看。当我加入不相关的实体时,我最初遵循了一个示例,并认为我有一些工作,但行计数完全错误。我使用的测试数据库最多只有150行,但行数大约为47000行,因此结果集不断膨胀。我添加了更多连接,并通过硬编码对订单进行了编码,结果是:

select new AdjusterSortDTO(detail, rfsth, rule, cm ) 
From Detail detail 
left join Rule rule on rule.Detail.DetailId=detail.DetailId 
left join Header  rfsth on rfsth.headerId=detail.header.headerId
left join ClaimMaster  cm 
on rfsth.claimNum = cm.claimNum order by cm.adjusterEmail
目前还不确定这个问题对其他人是否有价值