有一对关联表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怎么办??希望各位大侠能帮忙解决,先谢谢了!
....
<!-- 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怎么办??希望各位大侠能帮忙解决,先谢谢了!
呵呵。你自己去company数据的时候,product可以取也可以不取。
呵呵,lazy
不知道你想要得到什么, 要得到company, 只要对Company表查询就可以了
Query q = s.createQuery("from Company com where ...");
from Company com left join
( select companyid,max(product_code)as product_code
from product group by companyid
) product