Spring Data JPA - 在连接表

时间:2017-09-19 18:09:52

标签: java spring hibernate spring-data-jpa

我正在构建一个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中提供的第一个实体(在本例中为table1)来应用来自我的Pageable对象的排序。 / p>

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

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

非常感谢。

1 个答案:

答案 0 :(得分:0)

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