多对多:

![]()

类 Student:
public class Student
{
private Integer id ;
private String studentName ;
private Set<Teacher> teachers = new HashSet<Teacher>();
...
映射文件:
<class name="Student" >
<id name="id" >
<generator class="native" ></generator>
</id>
<property name="studentName" ></property>
<set name="teachers" table="teacher_student_ealation">
<key column="studentId" ></key>
<many-to-many class="Teacher" column="teacherId" ></many-to-many>
</set>
</class>
类 Teacher:
public class Teacher
{
private Integer id ;
private String teacherName ;
private Set<Student> studens = new HashSet<Student>();
...
映射文件:
<class name="Teacher" >
<id name="id" >
<generator class="native" ></generator>
</id>
<property name="teacherName" ></property>
<set name="studens" table="teacher_student_ealation">
<key column="teacherId" ></key>
<many-to-many class="Student" column="studentId" ></many-to-many>
</set>
</class>
表结构:
teacher 表
student 表
teacher_student_realation 表
结论:
从表结构看:
teacher 和student 表各自自由属性 id 和name。 他们的对应关系 在另外一张表 teacher_student_realation 表。
在表 teacher_student_realation 中 没调数据一一对应
相同的 studentId 可以 有不同的值,即表示 一个 student 对应 多位teacher。
同样 相同的teacherId 有不同的值,即表示 以为 teacher 对应 多个 student。
从面相对象看:
Teacher 类中有集合熟悉 students;
student 类中有集合熟悉 teachers;
分别表示各自的报刊关系。
注意:
在各自的映射文件 中 都用set 集合。
在写set 集合时 要指明相同的关系表 此处是teacher_student_realation ;
记住一点 在集合熟悉中 key 是别的表的字段(外键)指向自己这张表。
本文详细解析了多对多关系在映射文件中的实现方式,包括类定义、映射文件配置和表结构设计。通过实例展示了如何在类中使用集合来建立学生与教师之间的多对多关系,并在映射文件中正确配置多对多关系的属性。
486

被折叠的 条评论
为什么被折叠?



