ManyToMany関係を持ち、最初のテーブルに参照がある3番目のテーブルに関連する2つのテーブルを結合して、Pageable POJOを構築しています。 質問の中核に質問を簡略化します。Springデータ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);
すべての私のフィールドはソート可能にする必要がありますが、私はこのクエリのHibernateの結果から気づくように、それは常に来るソートを適用するために、クエリ(この場合はTABLE1)に設けられた第1のエンティティを使用しています私のPageableオブジェクトから。私はorder by t2.description
の代わりにorder by t1.description
で私のソートフィールドの結果に「説明」を渡して、表2の説明でソートしたい場合は
だから私は行方不明です何かによってSortオブジェクトを構築するための具体的な方法はありますorder by
で使用するテーブルを明示的に指定していますか? 私のリポジトリは、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