Hibernate 的关系映射1 Many2Many

多对多(如用户与权限关系。一个用户可以有多个权限,一个权限可以分配给多个用户)

关系维护端:一般将多(many)的一方定义为关系维护端,负责外键记录的更新;

关系被维护端:是没有权力在关系维护端定义外键。

多对多的关联是可以按个人习惯自定义关系维护端与被维护端。

单向关联

下面例子将权限对象做为关系维护端

Role.hbm.xml

<hibernate-mapping>

    <class name="com.hibernate.manytomany1.Role" table="t_role1">

       <id name="id">

           <generator class="native"/>

       </id>

       <property name="name"/>

       <!—定义外键关联-->

       <set name="users" table="t_user_role1">

           <key column="roleid"/>

           <many-to-many class="com.hibernate.manytomany1.User" column="userid"/>

       </set>

    </class>

</hibernate-mapping>

 

User.hbm.xml 在这个文档中没有任何关联的定义

<hibernate-mapping>

    <class name="com.hibernate.manytomany1.User" table="t_user1">

       <id name="id">

           <generator class="native"/>

       </id>

       <property name="name"/>

    </class>

</hibernate-mapping>

双向关联

Role.hbm.xml

<hibernate-mapping>

    <class name="com.hibernate.manytomany2.Role" table="t_role2">

       <id name="id">

           <generator class="native"/>

       </id>

       <property name="name"/>

       <!—定义外键关联-->

       <set name="users" table="t_user_role2">

           <key column="roleid"/>

           <many-to-many class="com.hibernate.manytomany2.User" column="userid"/>

       </set>

    </class>

</hibernate-mapping>

 

User.hbm.xml

<hibernate-mapping>

    <class name="com.hibernate.manytomany2.User" table="t_user2">

       <id name="id">

           <generator class="native"/>

       </id>

       <property name="name"/>

<!—-定义双向关联table属性必须和单向关联中table的名称相同;

<key>中的column属性值必须等于单向关联中<many-to-many>标签指向的column的属性值,<many-to-many>column属性值必须等于单向关联中(Role.hbm.xml)<key>column的属性值

-->

       <set name="roles" table="t_user_role2">

           <key column="userid"/>

           <many-to-many class="com.hibernate.manytomany2.Role"

column="roleid"/>

       </set>

    </class>

</hibernate-mapping>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值