hibernate映射(四)——多对多

来源:互联网 发布:杭州淘宝摄影培训班 编辑:程序博客网 时间:2024/05/18 15:29
多对多和一对多的映射关系很像,原理上也是相通的。于是,学习这种映射时,还是应该再回忆一下一对多和多对一的映射。很简单,当出现多对多的映射时,很自然会用到第三张表来维护它们之间的关系。正如人员和职务之间的关系:

这里写图片描述

    <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
原创粉丝点击