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

标签 java spring hibernate spring-data-jpa

我正在通过连接两个具有多对多关系的表来构建可分页 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/

相关文章:

java - 将图像旋转90度说明

json - 无法从 String 反序列化 java.time.LocalDate 类型的值

java - 在 Spring Integration 中结合几个 channel

java - CCTOR 中的 Spring java.lang.NoClassDefFoundError

mysql - 更新时出现 Hibernate 多对多 ConstraintViolationException

java - 试图证明二分查找的复杂度是O(log(n))

java - 将字符串转换为 uint8_t 数组

java - GAE Servlet XML 响应。如何?

javascript - 在 onclick 属性中使用 thymeleaf 变量

java - Jackson + Hibernate = 很多问题