<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.zr.bimany2many.xml">
<!-- Tester类对应testers表 -->
<class name = "Tester" table = "testers">
<!-- testers表的主键 -->
<id name="id" column="id">
<!-- 主键生成策略 -->
<generator class="sequence">
<!-- 数据库中序列的名字 -->
<param name="sequence">testers_id_seq</param>
</generator>
</id>
<!-- 普通字段的映射 -->
<property name = "name"></property>
<!-- 测试人员到测试项目的多对多关联-->
<!-- 定义关联表 -->
<!-- table定义关联表的表名 -->
<!-- cascade:关联同步 -->
<set name="projects" table="testers_projects" cascade="save-update">
<!-- 我(测试人员)在关联表中的外键 -->
<key column="testers_id"></key>
<!-- 多对多关联的另一方(测试项目) -->
<many-to-many class="Project" column="projects_id"></many-to-many>
</set>
</class>
<!-- ================================================================================================== -->
<!-- Project类对应projects表 -->
<class name = "Project" table="projects">
<!-- projects表的主键 -->
<id name="id" column="id">
<!-- 主键生成策略 -->
<generator class="sequence">
<param name="sequence">projects_id_seq</param>
</generator>
</id>
<!-- 普通字段的映射 -->
<property name = "name"></property>
<!-- 测试项目到测试人员的多对多关联-->
<!-- inverse同步数据控制权的反转 -->
<!-- 单向关联中,不需要管inverse了,默认="false" -->
<!-- 双向一对多关联中,在"一"(相对于多方)方设置 inverse="true"-->
<!-- 在双向多对多关联中,在任何一方设置 inverse=true-->
<!-- Tester中关联对象属性的名字testers -->
<set name = "testers" table="testers_projects" inverse="true">
<!-- 说明关联的外键 -->
<key column="projects_id"></key>
<!-- 说明与谁有多对多的关联 -->
<many-to-many class="Tester" column="testers_id"/>
</set>
</class>
</hibernate-mapping>