单向多对多关联映射


单向多对多关联对象模型:


映射后的关系模型:

多对多映射,会产生第三张表来维护关系



映射文件:

User.hbm.xml

<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC   "-//Hibernate/Hibernate Mapping DTD 3.0//EN"  "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="com.jialin.hibernate">  <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>

Role.hbm.xml

<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC   "-//Hibernate/Hibernate Mapping DTD 3.0//EN"  "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="com.jialin.hibernate">  <class name="Role" table="t_role">   <id name="id">    <generator class="native" />   </id>    <property name="name" />   </class>  </hibernate-mapping>


双向多对多关联映射

双向多对多关联对象模型


映射出的关系模型与单向一样。

映射方法基本相同,只是在多的一端加入:

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

      <key column="role_id" not-null="true"/>

      <many-to-many class="com.bjpowernode.hibernate.User" column="user_id"/>

 </set>


需要注意:

 * 生成的中间表名称必须一样

 * 生成的中间表中的字段必须一样