【问题标题】:Spring Data JPA - Pageable sorting on joined tableSpring Data JPA - 连接表上的可分页排序
【发布时间】:2018-02-28 15:16:20
【问题描述】:

我通过连接两个具有 ManyToMany 关系并通过第三个表相关的表来构造一个 Pageable 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)来应用来自我的 Pageable 对象的排序。

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

通过明确提供应该在order by 中使用的表,我是否缺少任何东西或任何特定的方式来构造排序对象? 我的存储库实现了JpaRepository

非常感谢。

【问题讨论】:

    标签: java spring hibernate spring-data-jpa


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-19
      • 2013-09-15
      • 2018-11-30
      • 1970-01-01
      • 2012-12-16
      相关资源
      最近更新 更多