有一对关联表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怎么办??希望各位大侠能帮忙解决,先谢谢了!

解决方案 »

  1.   

    干嘛要join?
    呵呵。你自己去company数据的时候,product可以取也可以不取。
    呵呵,lazy
      

  2.   

    to :mofeir(损人专家) 就是为了方便,懒得再把product加到company上,再说这样只执行一条sql语句,效率高。我现在通过for循环把相同的给略掉了,不知道还要有没有更好的办法?
      

  3.   

    你用左连接, company当然会有重复记录了, 
    不知道你想要得到什么, 要得到company, 只要对Company表查询就可以了
    Query q = s.createQuery("from Company com where ...");
      

  4.   

    我想把二者的数据一起取到,把相关product放到company的一个列表中看来这里和标准sql还是一致的
      

  5.   

    一个例子:
    from Company com left join 
    ( select  companyid,max(product_code)as product_code 
      from  product  group  by companyid
    ) product