使用hibernate构造hql语句时order by的妙用
2012-05-04 18:57
471 查看
/** * 终端更换记录 查询字段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"; }上面为XXXAction.java中的方法
下面为XXXManager.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 ";//默认从小到大排序
相关文章推荐
- hibernate如何使用hql语句查询时间区间段
- Tapestry+spring+hibernate整合使用时HQL语句问题!
- hibernate之HQL语句编写(用于多表查询,单不复杂时使用)
- Hibernate的Hql语句使用in关键字
- hibernate HQL中不能使用insert语句
- hibernate里使用hql语句处理多表查询
- 在hibernate中使用HQL语句和QBC两种方法进行查询
- hibernate的hql不能使用insert语句
- MySql函数 FIND_IN_SET 在Hibernate HQL语句中的使用
- 如何在hibernate+mySQL中使用HQL的cast语句
- Hibernate查询时,使用HQL和SQL的区别(SUM语句)
- hibernate使用查询语句hql
- Hibernate中使用HQL语句删除数据
- Java Hibernate中使用HQL语句进行数据库查询的要点解析
- hibernate之大批量和批量操作(使用HQL的大批量语句)
- hibernate如何使用hql语句查询时间区间段
- Hibernate框架使用Hql语句的in关键字
- Hibernate使用hql语句查询
- hibernate 的hql查询语句中使用fetch的注意点
- hibernate hql语句in的使用和占位符