hibernateを使用してhql文を構築する際のorder byの妙用


    /**
     *            gsn     
     */
    public String queryStaposchange()throws Exception{
        p("start...");
        String postationid = request.getParameter("postationid");
        p(postationid);
        p("end...");
        //    gsn     
//        List<Staposchange> staposchangeList =

staposchangeManager.queryStaposchange(postationid);
        
//        List<Staposchange> staposchangeList0 =

staposchangeManager.queryStaposchange(postationid,0);
//        List<Staposchange> staposchangeList1 =

staposchangeManager.queryStaposchange(postationid,1);
        List<Staposchange> staposchangeList;
        List<String> gsn = staposchangeManager.queryStaposchangegsn

(postationid);//  gsn list
        List<Staposchangeimei> spcimeiList = new

ArrayList<Staposchangeimei>();
//        String gsn = "";
        p("mark1");
        if(gsn!=null){
            spcimeiList = new ArrayList<Staposchangeimei>();
            p("mark2");
        for(String str:gsn){
            
            staposchangeList =

staposchangeManager.queryStaposchangeByGsn(str);
            
            
            //                           List

  (List      , List<Entity>)
            //pos.formerimei(   0 )  pos.postationid  pos.imei(  

 1 )  sta_pos_change.createtime
//            List<Staposchangeimei> spcimeiList = new

ArrayList<Staposchangeimei>();
            Staposchangeimei spcimei = new Staposchangeimei();
            for(Staposchange spc:staposchangeList){
                p("***************"+spc.getStatus());
                p("***************"+spc.getPos().getImei());
                p("***************"+spc.getCreatetime());
                if(spc.getStatus()==0){
                    String formerimei = spc.getPos().getImei();
                    spcimei.setFormerimei(formerimei);
                    spcimei.setPostationid(postationid);
//                    Date createtime = spc.getCreatetime();
//                    spcimei.setCreatetime(createtime);
                    p("mark3");
                }if(spc.getStatus()==1){
                    String imei = spc.getPos().getImei();
                    spcimei.setImei(imei);
                    spcimei.setPostationid(postationid);
                    Date createtime = spc.getCreatetime();//  

 1       
                    spcimei.setCreatetime(createtime);
                    p("mark4");
                }
            }
            spcimeiList.add(spcimei);
            p("mark5");
        }
        }
//        p(staposchangeList.get(0).getCreatetime());
//        p(staposchangeList.get(0).getGsn());
//        p(staposchangeList.get(0).getStatus());
//        p(staposchangeList.get(0).getPos().getImei());
//        p(staposchangeList.get(0).getStation().getStid());
//        p(staposchangeList.get(0).getCreatetime());
//        p(staposchangeList.get(0).getCreatetime());
//        p(staposchangeList.get(0).getCreatetime());
//        p(staposchangeList.get(0).getCreatetime());
//        p(staposchangeList.get(0).getCreatetime());
        
        
//        request.setAttribute("staposchangeList", staposchangeList);
        p("mark6");
        if(spcimeiList.size()==0){
//            request.setAttribute("staposchangeList", null);
            spcimeiList = null;
        }
        request.setAttribute("staposchangeList", spcimeiList);
        return "pos-alter";
    }

の上面はXXActionである.JAvaでのメソッド
以下、XXXXXmanager.JAvaでのメソッド
   /**
     *             gsn     
     * @param postationid
     * @author ylchou
     */
    @SuppressWarnings("unchecked")
    public List<Staposchange> queryStaposchangeByGsn(String gsn) throws

Exception{
//        String hql = " from Staposchange where station.stid=(select stid from Station where postationid=?)";
//        String hql = " from Staposchange where gsn in(select gsn from

Staposchange where station.stid=(select stid from Station where postationid=?) group by gsn)";
        String hql = " from Staposchange where gsn=?";//        
        p("    2...");
        List<Staposchange> list = this.entityDao.find(hql, gsn);
        p("    2...");
        return list.size()==0?null:list;
    }

解決策:sql文で時間に応じて小さいものから大きいものに並べ替える
String hql = "from Staposchange where gsn=? order by createtime ";//小さい順から大きい順にデフォルト設定