Criteria APIの利用 (5/6)
作成:2017-10-28 10:12
更新:2017-10-28 10:12
更新:2017-10-28 10:12
■並べ替えについて
データの並べ替えは、CriteriaQueryクラスの「orderBy」というメソッドを使って行うことができます。これは、以下のように実行をします。
このorderByを呼び出すことで、CriteriaQueryに並べ替えの設定を追加します。問題は、引数のOrderというクラスでしょう。これは、以下のように作成をします。
・昇順のOrder
・降順のOrder
引数は、先ほど説明したPredicateクラスのインスタンスを指定します。これでエンティティのプロパティと指定することで、その項目を基準にしてエンティティを並べ替えることができます。
では、利用例を下に挙げておきましょう。これは、MyDataEntityをIDで降順にして並べ替え表示する例です。ここでは、以下のようにして検索の設定を行なっています。
selectの後にメソッドチェーンでorderByを続けています。その第1引数に、descによるOrderインスタンスを設定しておきます。これで、idによる降順での並べ替えが実装されるようになります。
[CriteriaQuery].orderBy( [Order] );
このorderByを呼び出すことで、CriteriaQueryに並べ替えの設定を追加します。問題は、引数のOrderというクラスでしょう。これは、以下のように作成をします。
・昇順のOrder
[CriteriaBuilder].asc( [Predicate] )
・降順のOrder
[CriteriaBuilder].desc( [Predicate] )
引数は、先ほど説明したPredicateクラスのインスタンスを指定します。これでエンティティのプロパティと指定することで、その項目を基準にしてエンティティを並べ替えることができます。
では、利用例を下に挙げておきましょう。これは、MyDataEntityをIDで降順にして並べ替え表示する例です。ここでは、以下のようにして検索の設定を行なっています。
criteria_query.select(root).orderBy(builder.desc(root.get("id").as(Integer.class)));
selectの後にメソッドチェーンでorderByを続けています。その第1引数に、descによるOrderインスタンスを設定しておきます。これで、idによる降順での並べ替えが実装されるようになります。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
●プログラム・リスト●
// ※サーブレットに追記 import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaQuery; import javax.persistence.criteria.Root; @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { EntityManager manager = factory.createEntityManager(); CriteriaBuilder builder = manager.getCriteriaBuilder(); CriteriaQuery<MyDataEntity> criteria_query = builder.createQuery(MyDataEntity.class); Root<MyDataEntity> root = criteria_query.from(MyDataEntity.class); criteria_query.select(root).orderBy(builder.desc(root.get("id").as(Integer.class))); Query query = manager.createQuery(criteria_query); List list = query.getResultList(); request.setAttribute("list", list); RequestDispatcher dispatcher = request.getRequestDispatcher("index.jsp"); dispatcher.forward(request,response); }
※関連コンテンツ
「初心者のためのJava Persistence API入門」に戻る