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 ";//小さい順から大きい順にデフォルト設定