我正在通过连接两个具有多对多关系的表来构建可分页 POJO,这两个表通过第三个表相关,第一个表中存在对第三个表的引用。 我将把我的查询简化到问题的核心。
@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 结果中注意到的,它始终使用查询中提供的第一个实体(本例中为 table1)来应用来 self 的 Pageable 对象的排序。
因此,如果我想按 table2 的描述进行排序,则在排序字段中传递“描述”会导致 order by t1.description
而不是order by t2.description
是否有任何我遗漏的内容或通过显式提供 order by
中应使用的表来构造 Sort 对象的任何特定方法?
我的存储库实现了JpaRepository
非常感谢。
最佳答案
您可以尝试使用``(在表名的任意一侧使用单数,但此处无法正确呈现)来转义表名。当我使用子查询遇到类似问题时,转义表名称似乎可以帮助 Spring 忽略它(而不是将其添加到排序字段名称的前面)。
关于java - Spring Data JPA - 连接表上的可分页排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46307171/