orderByによるエンティティのソート

8.5 orderByによるエンティティのソート

検索された結果は、基本的にエンティティを作成した順番(通常はID番号順)に取り出されます。が、エンティティをListとして取得する際、並び順を変更したい場合もあるでしょう。こうした場合に用いられるのが、CriteriaQueryの「orderBy」メソッドです。これは以下のように呼び出します。

   《CriteriaQuery》.orderBy(《Order》)

引数には「Order」というクラスのインスタンスを指定します。これはCriteriaBuilderにある以下のメソッドを使って取得するのが一般的です。

■昇順の Order を得る
   《CriteriaBuilder》.asc(《Expression》)

■降順の Order を得る
   《CriteriaBuilder》.desc(《Expression》)

引数のExpressionは、Rootのgetを使い、エンティティのプロパティを示すPathを指定するのが一般的です。 利用例を以下に示します。


   // ORDER BY句設定
   query.orderBy(builder.asc(root.get("isbn"));

これでisbnの要素について昇順に並べ替えるPredicateが設定されます。この builder.asc(root.get(○○)) といった書き方は、orderByの基本と考えておくとよいでしょう。


NEXT>> 8.6 本章のまとめ