首页 文章

Spring Data JPA - 在连接表上的可分页排序

提问于
浏览
2

我正在构建一个Pageable POJO,它通过连接两个具有ManyToMany关系的表并通过第三个表相关联,第三个表的引用存在于第一个表中 . 我将简化查询到问题的核心 .

@Query("SELECT new package.myDTO(t1.name, t2.description) FROM table1 t1, table2 t2 where t1.relatedtable.table2Id = t2.id") Page<myDTO> findSomething(Pageable pageable);

我的所有字段都必须是可排序的,但正如我从该查询的Hibernate结果中注意到的那样,它总是使用Query中提供的第一个Entity(在本例中为table1)来应用来自我的Pageable对象的排序 .

因此,如果我想按表2的描述排序,在我的排序字段中传递"description"会导致 order by t1.description 而不是 order by t2.description

是否有任何我缺少的或通过明确提供应该在 order by 中使用的表来构造Sort对象的任何特定方法?我的存储库实现 JpaRepository

非常感谢 .

2 回答

  • 0

    您可以尝试将“t1.description”或“t2.description”作为Pageable中的排序字段传递,以便每次都指定所需的表 .

  • 0

    您可以尝试使用``(在表名的任何一侧使用奇异但在此处无法正确呈现)以逃避表名 . 当我使用子查询遇到类似的问题时,退出表名似乎有助于Spring忽略它(不会在Sort字段名称的前面加上它) .

相关问题