请教个问题呢 如何用QBC 根据外键的某个字段 查询主表的类容呢?crit.add(Expression.eq("userInfo.userCode", "xx")); 这么用不行呢!  我是直接 外键.字段   QBC 不怎么熟悉我这里的要根据名字进行查询 而名字 确实这张表的外键  现在我想用QBC根据这个外键的名字这个字段作为条件 来查询主表的内容  希望各位能看懂!!!QBC

解决方案 »

  1.   

    大概是这样,Criteria criteria = session.createCriteria(主表.class);
    criteria.createAlias("userInfo", "u");  // 如果你想在结果集中取用户信息的话
    criteria.add(Expression.eq("u.userName", "xx"));
    List<主表> list = criteria.list();
      

  2.   

    按照你的意思 我做了 我debug的时候看了下 确实可以取到  但是我遍历出来的时候 就出错了?:
     [Ljava.lang.Object; cannot be cast to cn.iofd.learning.entity.Addr 不知道这是为什么??
      

  3.   

    结果集是Object数组的List啦,第一个是Addr,第二个是UserInfo;
    如果你不用UserInfo的话,去掉criteria.createAlias("userInfo", "u");这句话
      

  4.   

    当然,去掉的话下面一句的u要改为userInfo
      

  5.   

    Addr  和 UserInfo 两个都要用的 UserInfo我需要他的名字 需要展示到页面上  不好意思啊 脑子笨  能详细点么 谢谢 这个该怎么遍历啊 我是这样做的  for (int i=0;i<list.size();i++)
    {
    Addr adr = list.get(i);
    System.out.println("名字:"+adr.getUserInfo().getUserCode());
    System.out.println("地址:"+adr.getAddrAddress());
    }
      

  6.   

    大概这样,List<Addr> addrList = new ArrayList<Addr>();
    for (Object[] objects : rawList) {
      Addr addr = (Addr) objects[0];
      addrList.add(addr);
    }
      

  7.   

      rawList  是个List 还是什么?
      

  8.   

    就是查询结果,criteria.list()的值;
      

  9.   

    Type mismatch: cannot convert from element type Object to Object[]criteria.list()返回的是个List  而rawList 是个对象数组呢  不能转换! 我试了下
      

  10.   

    好吧,我没说清楚,
    应该是List<Object[]> rawList = criteria.list();
      

  11.   

     哎 QBC搞死个人啊 还是不行 感觉要是条件查询的时候  条件是外键的话 QBC 好麻烦啊!!! 算了 我还是写HQL吧!  不过还是谢谢你啊