多对多:
类 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 是别的表的字段(外键)指向自己这张表。