2009-04-16 | Hibernate关联映射 (多对多单双向)

本文介绍Hibernate框架中多对多关联关系的单向及双向映射方式,包括具体的XML配置文件示例,帮助理解如何在User和Role实体间建立多对多的关系。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

多对多单向 User --->Role

 

 

//User.hbm.xml

 

<hibernate-mapping>
       <class name="User" table="t_user">
                 <id name="id">
                          <generator class="native"/>
                 </id>
                 <property name="name"/>
                 <set name="roles" table="t_user_role">
                          <key column="userid"/>
                          <many-to-many class="Role" column="roleid"/>
                 </set>

        </class>
</hibernate-mapping>

 

<!--

       多对多关联映射会生成第三方的一张表,    t_user_role

        <key column="userid"/>  表示在表 t_user_role 中 加入userid  ,指向 t_user 的主键

        <many-to-many class="Role" column="roleid"/>  表示在由实体类Role 映射成的那张表(t_role)中加入一

        个字段roleid ,指向 t_role 的主键

--> 

 

//Role.hbm.xml

 

<hibernate-mapping>
         <class name="Role" table="t_role">
                <id name="id">
                       <generator class="native"/>
                </id>
                <property name="name"/>
         </class>
</hibernate-mapping>

 

 

多对多双向  User <---> Role

 

 

 

//Role.User.xml (跟单向一样)

 

<hibernate-mapping>
         <class name="User" table="t_user">
                 <id name="id">
                         <generator class="native"/>
                 </id>
                 <property name="name"/>
                 <set name="roles" table="t_user_role">
                          <key column="userid"/>
                          <many-to-many class="Role" column="roleid"/>
                 </set>

        </class>
</hibernate-mapping>

 

<!--

      table属性值必须和单向关联中的table属性值一致
      <key>中column属性值要与单向关联中的<many-to-many>标签中的column属性值一致
      在<many-to-many>中的column属性值要与单向关联中<key>标签的column属性值一致

-->

 

//Role.hbm.xml(两边差不多一样的配置方法)

 

<hibernate-mapping>
         <class name="Role" table="t_role">
                  <id name="id">
                           <generator class="native"/>
                  </id>
                  <property name="name"/>
                  <set name="users" table="t_user_role" order-by="userid">
                            <key column="roleid"/>
                            <many-to-many class="User" column="userid"/>
                   </set>

         </class>
</hibernate-mapping>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值