hibernate映射(四)——多对多

多对多和一对多的映射关系很像,原理上也是相通的。于是,学习这种映射时,还是应该再回忆一下一对多和多对一的映射。
很简单,当出现多对多的映射时,很自然会用到第三张表来维护它们之间的关系。正如人员和职务之间的关系:

这里写图片描述

    <hibernate-mapping>

        <class name="com.bjpowernode.hibernate.User" table="t_user">
            <id name="id">
                <generator class="native"/>
            </id>
            <property name="name"/> 
            <set name="roles" table="t_user_role">
                <key column="user_id"/>
                <many-to-many class="com.bjpowernode.hibernate.Role" column="role_id"/>
            </set>  
        </class>


</hibernate-mapping>
多对多关系要生成一张第三方表来维护二者关系,所以这里table="t_user_role"表示生成的第三方表。关于这里的
<key column="user_id"/>
<many-to-many class="com.bjpowernode.hibernate.Role" column="role_id"/>
可以参照之前多对一的关系的理解。相当于两个many-to-one的关系。
1、对于<many-to-one>(用户多对角色一)来说,是在多的一方添加外键。那么key就代表参照的外键,many代表one的类型。唯一不同的是many-to-many中
将key放在了第三方表t_user_role中来维护。
2、而另外一个<many-to-one>(角色多对用户一)来说,也是要生成用户的外键role_id来存入t_user_role来维护。在这里直接用column="role_id"来表示了。

上面展示的是单向的多对多关系,双向的也是一样的。只是在角色方再添加一个对应的关系映射。表的生成并无变化!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值