两个表,USER,ROLE,
<class name="User" table="t_user" lazy="false">
<id name="user_id">
<generator class="native"/>
</id>
<property name="user_name"/>
<property name="user_pwd"/>
<property name="user_realname"/>
<property name="user_lovelyname"/>
<property name="user_infos"/>

<set name="roles" table="user_role" lazy="false">
<key column="user_id"/>
<many-to-many class="Role" column="role_id"/>
</set>
</class>
<class name="Role" table="t_role" lazy="false">
<id name="role_id">
<generator class="native"/>
</id>
<property name="role_name"/>
<property name="role_infos"/>
<set name="users" table="user_role" lazy="false">
<key column="role_id"/>
<many-to-many class="User" column="user_id"/>
</set>
</class>
建立两个表之间的关联完成
得知一个user对象,求和他关联的role 对象求不出来,是怎么回事啊
Set roles=user.getRoles();
roles.size()显示是0,但是数据库里明明对应的有值啊,这是为什么呢?

解决方案 »

  1.   

    需要3个表
    你需要加一个用户角色关联表user role  user_roleuser_role表字段
    role_id
    user_id
    <class name="User" table="t_user" lazy="false">
            <id name="user_id">
                <generator class="native"/>
            </id>
            <property name="user_name"/>
            <property name="user_pwd"/>
            <property name="user_realname"/>
            <property name="user_lovelyname"/>
            <property name="user_infos"/>
            
            <set name="roles" table="user_role" lazy="false">
                <key column="user_id"/>
                <many-to-many class="Role" column="role_id"/>
            </set>
        </class>
    <class name="Role" table="t_role" lazy="false">
            <id name="role_id">
                <generator class="native"/>
            </id>
            <property name="role_name"/>
            <property name="role_infos"/>
            <set name="users" table="user_role" lazy="false">
                <key column="role_id"/>
                <many-to-many class="User" column="user_id"/>
            </set>
    </class>
      

  2.   

    有了啊,hibernate建表的时候自动给建立了啊
      

  3.   

    显示啊,都没有问题啊,可是就是现实roles.size()是0,郁闷死了
      

  4.   

     <set name="users" table="user_role" lazy="false">
                <key column="role_id"/>
                <many-to-many class="User" column="user_id"/>
            </set>
     <set name="roles" table="user_role" lazy="false">
                <key column="user_id"/>
                <many-to-many class="Role" column="role_id"/>
            </set>
    我感觉<key column="role_id"/><key column="user_id"/>这两句没必要要吧?
      

  5.   

    看错了,是many-to-many!!!!
      

  6.   

    <set name="users" table="user_role" lazy="false" inverse="false">
                <key column="role_id"/>
                <many-to-many class="User" column="user_id"/>
            </set>
    <set name="roles" table="user_role" lazy="false" inverse="true">
                <key column="user_id"/>
                <many-to-many class="Role" column="role_id"/>
            </set>
    many-to-many你改成这样试试
     
      

  7.   

    打出sql语句看看,看是不是关联关系写错了。