Hibernate left join fetch 关联查询问题

llsoft 2005-07-17 05:55:16
有一对关联表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怎么办??

希望各位大侠能帮忙解决,先谢谢了!
...全文
452 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
laughsmile 2005-07-22
  • 打赏
  • 举报
回复
一个例子:
from Company com left join
( select companyid,max(product_code)as product_code
from product group by companyid
) product
llsoft 2005-07-22
  • 打赏
  • 举报
回复
我想把二者的数据一起取到,把相关product放到company的一个列表中

看来这里和标准sql还是一致的
osborne 2005-07-19
  • 打赏
  • 举报
回复
你用左连接, company当然会有重复记录了,
不知道你想要得到什么, 要得到company, 只要对Company表查询就可以了
Query q = s.createQuery("from Company com where ...");
llsoft 2005-07-19
  • 打赏
  • 举报
回复
to :mofeir(损人专家)

就是为了方便,懒得再把product加到company上,再说这样只执行一条sql语句,效率高。

我现在通过for循环把相同的给略掉了,不知道还要有没有更好的办法?
mofeir 2005-07-18
  • 打赏
  • 举报
回复
干嘛要join?
呵呵。你自己去company数据的时候,product可以取也可以不取。
呵呵,lazy
star_str 2005-07-17
  • 打赏
  • 举报
回复
up
rayocean2002 2005-07-17
  • 打赏
  • 举报
回复
up

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧