现在需要将一个多对多的关系拆分,比如学生和老师之间的关系,拆成两个多对一,并且中间表也需要实体类、配置文件。我大概是这样做的:
学生表:
<hibernate-mapping default-lazy="false">
<class name="Student" table="t_stutent">
<id name="id" type="long">
<column name="ID" precision="20" scale="0"/>
<generator class="sequence">
<param name="sequence">SEQ_STUTENT </param>
</generator>
</id>
<set name="Teacher" inverse="true" lazy="false" cascade="all-delete-orphan">
<key column="STUTENT_ID"/>
<one-to-many class="StudentTeacher"/>
</set>
</class>
</hibernate-mapping>
教师表:
<hibernate-mapping default-lazy="false">
<class name="Teacher" table="t_teacher">
<id name="id" type="long">
<column name="ID" precision="20" scale="0"/>
<generator class="sequence">
<param name="sequence">SEQ_TEACHER </param>
</generator>
</id>
<set name="stutent" inverse="true" lazy="false" cascade="all-delete-orphan">
<key column="TEACHER_ID"/>
<one-to-many class="StutentTeacher"/>
</set>
</class>
</hibernate-mapping>
中间表(即StutentTeacher类对应的表):
<hibernate-mapping default-lazy="false">
<class name="StutentTeacher" table="t_stu_tea">
<id name="id" type="long">
<column name="ID" precision="20" scale="0"/>
<generator class="sequence">
<param name="sequence">SEQ_STU_TEA </param>
</generator>
</id>
<property name="studentId" type="long">
<column name="STUTENT_ID" precision="20"/>
</property>
<many-to-one name="stutent" class="Stutent" fetch="select" insert="false" update="false">
<column name="STUTENT_ID"/>
</many-to-one>
<property name="teacherId" type="long">
<column name="TEACHER_ID" precision="20"/>
</property>
<many-to-one name="teacher" class="Teacher" insert="false" update="false" fetch="select">
<column name="TEACHER_ID"/>
</many-to-one>
</class>
</hibernate-mapping>
Hibernate拆分多对多关系
最新推荐文章于 2020-03-26 15:09:40 发布