我通過連接兩個具有ManyToMany關係的表並通過第三個表(第一個表中存在引用)關聯來構造Pageable POJO。 我將簡化我的查詢到問題的核心。Spring Data JPA - 對已連接表進行頁面排序
@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);
我所有的領域都有可排序,但因爲我是從這個查詢的休眠結果發現,它總是使用在查詢(在這種情況下,表1)提供的第一個實體來應用來排序來自我的Pageable對象。
所以,如果我想通過表2的描述進行排序,傳遞我的排序字段結果「說明」中order by t1.description
而不是order by t2.description
有什麼我失蹤或者通過構建一個排序對象的任何特定的方式明確提供應在order by
中使用的表格? My Repository實現JpaRepository
非常感謝。
不,不幸的是,我已經嘗試過,除非我失去了一些東西。 具體來說,如果我在Sort中添加t2.description,Hibernate的結果是'order by t1.t2.description' – Nigat
你能修改查詢「SELECT new package.myDTO(t1.name,t2.description)FROM table1 t1 LEFT JOIN t1.relatedtable t2「並執行相同的測試以查看會發生什麼(假設實體T1的相關字段是T2類型)? – lzagkaretos