65266


現在、JavaEEにてアプリ作成をしております。

現在は入力欄から入力した部署ID、部署番号、部署名、場所に一致したデータを取得して表示するプログラムですが、  
ここに「部署番号の昇順」で値を取得し表示する処理を追加したいと思っています。

自分なりに調べたところ、「名前付きクエリ」を使用するのかと思ったのですが、詰まってしまいました。  
ご教示いただけますと幸いです。

（初投稿の為、勝手が分かっていないところがあれば、ご指摘いただきたく存じます。）

[code]

    /**
         * 部署一覧取得
         * @param id 部署ID
         * @param deptNo 部署番号
         * @param deptName 部署名
         * @param location 場所
         * @return
         */
        public List<Dept> find(Long id, Integer deptNo, String deptName, String location){
            // クエリの生成
            CriteriaBuilder cb = em.getCriteriaBuilder();
            CriteriaQuery<Dept> query = cb.createQuery(Dept.class);
            Root<Dept> r = query.from(Dept.class);
    
            // SELECTを生成
            query.select(r);
    
            // WHEREを生成
            List<Predicate> wheres = new ArrayList<>();
            if(id != null) wheres.add(cb.equal(r.get(Dept_.id), id));
            if(deptNo != null) wheres.add(cb.equal(r.get(Dept_.deptNo), deptNo));
            if(deptName != null && !deptName.equals("")) wheres.add(cb.like(r.get(Dept_.deptName), "%" + deptName + "%"));
            if(location != null && !location.equals("")) wheres.add(cb.like(r.get(Dept_.loc), "%" + location + "%"));
            query.where(wheres.toArray(new Predicate[]{}));
    
            // クエリを実行
            return em.createQuery(query).getResultList();
        }
    
    
[/code]

[code]

    /**
     * 検索画面のビジネスロジック
     */
    @Stateless
    public class SearchLogicImpl implements SearchLogic {
    
        @Inject
        private DeptDao dao;
    
        /**
         * 検索処理を実行
         * @param bean 検索画面のバッキングBean
         */
        @Override
        public void search(SearchBean bean){
            bean.setDepts(dao.find(bean.getId(), bean.getDeptNo(), bean.getDeptName(), bean.getLoc()));
        }
    }
    
[/code]

[code]

        /**
         * 検索ボタン押下時処理
         * @return 遷移先画面
         */
        @Auth
        public String search(){
            // 入力された条件で社員を検索する
            logic.search(this);
            return null;
        }
    
[/code]


CC BY-SA 4.0
2020-04-01T00:16:54.257
65264
2020-04-01T01:04:11.720
2020-04-01T00:23:43.040
question
java sql java-ee jsf
JavaEEアプリで部署番号の昇順で値を取得したい


ソートしたいなら、`CriteriaQuery.orderBy()`を使えばいいのではないですかね？

<https://docs.oracle.com/javaee/7/api/javax/persistence/criteria/CriteriaQuery.html#orderBy-
java.util.List->


CC BY-SA 4.0
2020-04-01T01:04:11.720
65266
2020-04-01T01:04:11.720
21092
65264
answer