整个项目用 struts + Hibernate + spring      现有八张不同的表,每张表里面有2~3个字段作为索引(检索的条件).我现在想在页面做八张表的组合查询  建立视图感觉字段又太多了点.   我现在考虑用Hibernate 的 DetachedCriteria 在Web层组合查询条件,但  没做过.有没有高手遇到过这种情况过,请指教!  其它的解决思路也可以  最好有代码        谢谢 !  解决问题就立即给分

解决方案 »

  1.   

    给段代码,看对你有用不,只是其中只有三个表,并表之间有关联,可能与你的不一样public List queryGoodsPositionEntry(String matCode, String matName, GoodsPosition gp,String matType, JXProject project, User fetcher, Date afterTime, Date beforeTime) {
    List retList = new ArrayList(); Transaction tx = null;
    Session session = null;
    try {
    session = sf.openSession();
    tx = session.beginTransaction();
    Criteria crit = null;
    crit = session.createCriteria(OperationEntryForFind.class);
    crit.createAlias("materiel", "m");
    crit.createAlias("depositoryOperation", "dop");
    if (matCode != null && matCode.length() > 0) {
    matCode = matCode.replace('*', '%');
    crit.add(Expression.ilike("m.code", matCode));
    }
    if (matName != null && matName.length() > 0) {
    matName = matName.replace('*', '%');
    crit.add(Expression.ilike("m.objectName", matName));
    }
    if (gp != null) {
    crit.add(Expression.eq("goodsPosition", gp));
    }
    if (matType != null && matType.length() > 0) {
    matType = matType.replace('*', '%');
    crit.add(Expression.ilike("m.objectType", matType));
    }
    if (project != null) {
    crit.add(Expression.eq("dop.project", project));
    }
    if (fetcher != null) {
    crit.add(Expression.eq("dop.fetcher", fetcher));
    }
    if (afterTime != null) {
    crit.add(Expression.ge("dop.operationTime", afterTime));
    }
    if (beforeTime != null) {
    crit.add(Expression.le("dop.operationTime", beforeTime));
    }
    crit.addOrder(Order.asc("materiel"));
    retList = crit.list();

    tx.commit();
    } catch (Exception e) {
    if (tx != null) {
    tx.rollback();
    }
    e.printStackTrace();
    } finally {
    session.close();
    }
    return retList;
    }
      

  2.   

    另外两张表的对象 与 OperationEntryForFind  关联吗?