三表连接
 from user a,groupuser b,group c where c.id = b.gid and a.id = b.uid and c.id = '001'应该是这样的吧 你试试..

解决方案 »

  1.   

    不好意思,我要得是hql!   groupuser是中间表,没有类与它对应!
    Thank you all the same !
      

  2.   

    select u from group g inner join g.users u where g.id="001"
      

  3.   

    在group.hbm.xml中要有
            <set
                    name="users"
                    table="groupuser">
                <key>
                    <column name="gid" not-null="true"/>
                </key>
                <many-to-many
                        class="pack.User"
                        column="uid"/>
            </set>
      

  4.   

    关键在于,处于原因,要求UserPO和GroupPO是单向的,即UserPO里含有集合groups,但GroupPO不含UserPO的集合!   这就是麻烦的地方!!!!
      

  5.   

    我只是给个提示,并不是说hql不能实现,不要误导楼主
      

  6.   

    我想用hql实现,因为对hql不熟!
      

  7.   

    user: id(pk) ...
     groupuser:gid(pk),uid(pk)
     group:id(pk) ...
    =============================
     from user u where exists ( select g from u.groups g where g.id='001')
    你试试,不知道行不行
      

  8.   

    hibernate对于多对多的表关系实现不好。以及复合主键不好。所以我一般中间表的主键就是id。user: id(pk) ...
    groupuser:id(pk)gid(fk),uid(fk)
    group:id(pk) ...那样的话 xml配置用 lazy="false"。可以通过group set到 groupuser,在 join到user
      

  9.   

    jingtao8177(快餐委员会,医学牙防组,足协) 同志的是正确的!!!!!
    但据我的理解u.groups对应的应该是groupuser中间表,何来的g.id
    莫非u.groups对应的是group表??????????
      

  10.   

    那就
    select u from User u inner join u.groups g where g.id="001"
      

  11.   

    dreamover(梦醒了〖http://hellfire.cn〗)   也是正确的!
    看来u.groups g 对应的不是中间表groupuser , 而应该是group表!
    有谁能详细解释一下吗?
      

  12.   

    本地sql查询hql关联查询到的值取出来也很麻烦选择的使用,hibernate 也不是一个完美的东西(个人观点)
      

  13.   

    谁能详细解释一下,u.groups g吗?  它是代表的GroupPO吗?
    总是觉得u.groups g 是一个集合,直接g.id 好像不太合理!!!!!!
      

  14.   

    如果是直接写sqlselect * from users where users.id="002"这儿用users,你也觉得不合理?
      

  15.   

    在你的user.hbm.xml里的<set>属性中就可以看到你的groupset映射的是哪个表了,一般如果有中间表的PO,<set>中最好映射为中间表groupUser,groupSet对应groupUser ; 如果没有中间表则<set>中则映射为group ,hibernate将其看做为一对多的处理方式,这时groupSet集合则对应group。
       另外u.group g肯定是个set集合,而g.id 就如sql 语句中 t_xxx.id 一样的原理