Hibernate多表查询

来源:互联网 发布:孙巍 悦游网络 编辑:程序博客网 时间:2024/06/05 15:38
2007年07月09日 星期一 19:38A 表    有字段 A(varchar2)   B(varchar2) C(varchar2)   D(Date)B 表    有字段 P(varchar2)   E(varchar2) F(varchar2)   W(Date)C 表    有字段 P(varchar2)   G(DOUBLE)    F(varchar2)   O(Date)public Vector getList(GlbttfQueryForm form, int startIndex, int maxResults,    HttpServletRequest request, boolean isok) throws Exception {   RkglDAO dao = new RkglDAO();   Session session = dao.getSession();   HashMap paramMap = new HashMap();   Vector vector = new Vector();   if (session == null || !session.isOpen())    session = dao.createNewSession();    StringBuffer hql = new StringBuffer(" select a.B,a.C,a.D,a.F,a.G,a.E from   "   +        " ( select aa.B,aa.C,aa.D,bb.F,bb.E   from "   +        " B bb , A aa "   +        " where aa.A = bb.P and bb.E not in('00','04')"   +        " union all"   +        " select aa.B,aa.C,aa.D,cc.F,cc.G from "   +        " C bb , A aa where aa.A = cc.P) a")";     Query query = session.createSQLQuery(hql.toString())                                .addScalar("B", Hibernate.STRING)                                .addScalar("C", Hibernate.STRING)           .addScalar("D", Hibernate.DATE)                                .addScalar("F",Hibernate.STRING)                                .addScalar("G", Hibernate.DOUBLE)           .addScalar("E", Hibernate.STRING);   try {    List list = query.list();    if (list.size() != 0) {     for (int i = 0; i < list.size(); i++) {      Object[] temp = (Object[]) list.get(i);     //这里便可以得到Object[]数组     }    } else {     form.setMsg("无数据!请核对您的查询条件!");    }    list.clear();   } catch (Exception ex) {    log.debug(ex);    throw ex;   } finally {    session.flush();    session.close();   }   return vector;
原创粉丝点击