我正在构建一个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
非常感谢。
答案 0 :(得分:0)
您可以尝试使用``(在表名的任何一侧使用奇异但在此处无法正确呈现)以逃避表名。当我使用子查询遇到类似的问题时,退出表名似乎有助于Spring忽略它(不会在Sort字段名称的前面添加它)。