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

Nig*_*gat 5 java spring hibernate spring-data-jpa

我正在构建一个 Pageable POJO,方法是连接 2 个具有多对多关系并通过第三个表相关的表,该表的引用存在于第一个表中。我将简化我的查询到问题的核心。

@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)来应用来自我的 Pageable 对象的排序。

因此,如果我想按 table2 的描述进行排序,则在排序字段中传递“描述”会导致order by t1.description而不是order by t2.description

有什么我遗漏的或通过明确提供应该在 Sort 中使用的表来构造 Sort 对象的任何特定方法order by吗?我的存储库实现了JpaRepository

非常感谢。

小智 0

您可以尝试使用 `` (在表名的两侧使用单数,但此处无法正确呈现)来转义表名。当我使用子查询遇到类似问题时,转义表名称似乎可以帮助 Spring 忽略它(而不是将其添加到排序字段名称的前面)。