得到父亲对象后,parentObj.getXXX.iterate

解决方案 »

  1.   

    谢谢你的答复,我的意思是取出符合条件的儿子,比如 from Child child where child.age > 18;取出所需儿子的同时,我想取出儿子所对应的父亲,这时候就多次查询父亲,比如:select child from Child child where child.age > 18;
    select parent from Parent parent where parent.id = 1;(因为儿子要关联父亲)
    select parent from Parent parent where parent.id = 2;
    ......等有多少个儿子,就要查询多少次父亲,这样的效率比较慢,有没有好的方法?
      

  2.   

    在ONE端 xxx.hbm.xml <set name="xxx" lazy="false"> 将lazy 设置为 false 立即检索
    这样你查询主表的时候会将从表所关联的字段全部查询
    比如商品类型(主)和商品信息表(从)
    List list = new OperDB().select(); //得到结果集
    Iterator it = list.iterator();     //使用跌代器便利数据
    while(it.hasNest()){
      商品类型 type = (商品类型)it.next();
      Set infos = type.get商品信息s(); //*(关键)会自动查询你many(从表)中的所有字段
      Iterator iter = infos.iterator();
      while(iter.hasNext()){
        商品信息 info = (商品信息)iter.next();
        System.out.print(info.get商品名称()...info.get商品类型());
      }
    }
      

  3.   

    谢谢 waterscript()  详细的回复我想我没有说清楚,以你的例子而言:找出需要的商品信息,在找出需要商品信息列表的时候,同时把商品信息对应的商品类型也找出来,现在设置lazy="false",是可以把商品类型关联到对应的商品信息上面,但是如果有多少商品信息,就要查询多少次商品类型表。我现在想要的是查询一次商品类型表就关联到对应的商品信息上面,想弄清楚的是查询效率的问题
      

  4.   

    奇怪了,为什么不用select child,parent from Child child, parent parent where child.parent = parent.id
    这个效率不错,如果你非要使用别的,可以在得到子列表后增加过滤器,但是有这个必要吗
      

  5.   

    notruiyi(什么乱七八糟的) :这个查询效率是可以,但是查询结果不是对象,处理起来稍微麻烦。你说的 “可以在得到子列表后增加过滤器”,这个怎么来用?
      

  6.   

    直接在XML文件里.JIONED-SUBCLASS把儿加进来.HQL=FROM 儿子 WHERE ID=?
      

  7.   

    select child from Child child fetch join child.parent where child.age > 18;
      

  8.   

    select child,parent from Child child, parent parent where child.parent = parent.id
    这个不错啊,如果结果不是对象,怎么不用javabean把它封装一下呢?