谢谢你的答复,我的意思是取出符合条件的儿子,比如 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; ......等有多少个儿子,就要查询多少次父亲,这样的效率比较慢,有没有好的方法?
在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商品类型()); } }
select parent from Parent parent where parent.id = 1;(因为儿子要关联父亲)
select parent from Parent parent where parent.id = 2;
......等有多少个儿子,就要查询多少次父亲,这样的效率比较慢,有没有好的方法?
这样你查询主表的时候会将从表所关联的字段全部查询
比如商品类型(主)和商品信息表(从)
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商品类型());
}
}
这个效率不错,如果你非要使用别的,可以在得到子列表后增加过滤器,但是有这个必要吗
这个不错啊,如果结果不是对象,怎么不用javabean把它封装一下呢?