Hibernate left join fetch 关联查询问题
有一对关联表company, product ,二者是一对多的关系,hbm文件的设置如下:
....
<!-- company -->
<list name="products" inverse="true">
<key column="companyid"/>
<index column="productorder" type="integer"/>
<one-to-many class="Product"/>
</list>
....
<!-- product -->
<many-to-one name="company" column="companyid" not-null="true"/>
在做关联查询以下关联查询时:
Query q = s.createQuery(
"from Company com left join fetch com.products"
+ " where company.companyid=:companyidorder by com.comindex"
);
q.setString("companyid", companyid);
得到的结果列表中有重复的记录,其记录数等于product的记录数。
为什么会如此,应该返回实际的company列表才对??
如果想得到不重复的company怎么办??
希望各位大侠能帮忙解决,先谢谢了!
问题点数:200、回复次数:7Top
1 楼runfeng(sunday)回复于 2005-07-17 21:08:03 得分 10
upTop
2 楼star_str(生命火花)回复于 2005-07-17 21:11:20 得分 10
upTop
3 楼mofeir(损人专家)回复于 2005-07-18 18:11:57 得分 50
干嘛要join?
呵呵。你自己去company数据的时候,product可以取也可以不取。
呵呵,lazy
Top
4 楼llsoft(天堂鱼)回复于 2005-07-19 09:32:15 得分 0
to :mofeir(损人专家)
就是为了方便,懒得再把product加到company上,再说这样只执行一条sql语句,效率高。
我现在通过for循环把相同的给略掉了,不知道还要有没有更好的办法?Top
5 楼osborne(做人要本份!)回复于 2005-07-19 09:49:54 得分 50
你用左连接, company当然会有重复记录了,
不知道你想要得到什么, 要得到company, 只要对Company表查询就可以了
Query q = s.createQuery("from Company com where ...");
Top
6 楼llsoft(天堂鱼)回复于 2005-07-22 10:45:15 得分 0
我想把二者的数据一起取到,把相关product放到company的一个列表中
看来这里和标准sql还是一致的Top
7 楼laughsmile(海边的星空)回复于 2005-07-22 11:31:50 得分 80
一个例子:
from Company com left join
( select companyid,max(product_code)as product_code
from product group by companyid
) productTop





