多對多雙向關聯:一個老師可以教很多學生,一個學生也可以被很多老師教。這是多對多。
@Entity
public class Teacher {
private int id;
private String name;
private Set<Student>stu=new HashSet<Student>();
@Id
@GeneratedValue
public int getId() {
return id;
}
@ManyToMany//多對多 默認情況下,hibernate會自動的創建一張中間表來維護多對多關係
/*
* 默認中間表的名稱 :Teacher_Student中間表,字段的名稱Teacher_id stu_id,如果想更換表名和字段名稱,註解如下:
@JoinTable
(name="teacher_stu",中間表的名稱
joinColumns={@JoinColumn(name="teacher_Id")},字段的名稱teacher_Id
inverseJoinColumns={@JoinColumn(name="stu_Id")})字段的名稱stu_Id
*/
@JoinTable(
name="teacher_stu",
joinColumns={@JoinColumn(name="teacher_Id")},
inverseJoinColumns={@JoinColumn(name="stu_Id")}
)
public Set<Student> getStu() {
return stu;
}
}
@Entity
public class Student {
private int id;
private String name;
private Set<Teacher>teacher=new HashSet<Teacher>();
@Id
@GeneratedValue
public int getId() {
return id;
}
//從一對一雙,到多對一雙向,到多對多雙向,mappedBy都要添加。
@ManyToMany(mappedBy="stu")
public Set<Teacher> getTeacher() {
return teacher;
}
}
多對多單向關聯:
@Entity
public class Teacher {
private int id;
private String name;
private Set<Student>stu=new HashSet<Student>();
@Id
@GeneratedValue
public int getId() {
return id;
}
@ManyToMany//多對多 默認情況下,hibernate會自動的創建一張中間表來維護多對多關係
/*
* 默認中間表的名稱 :Teacher_Student中間表,字段的名稱Teacher_id stu_id,如果想更換表名和字段名稱,註解如下:
@JoinTable
(name="teacher_stu",中間表的名稱
joinColumns={@JoinColumn(name="teacher_Id")},字段的名稱teacher_Id
inverseJoinColumns={@JoinColumn(name="stu_Id")})字段的名稱stu_Id
*/
@JoinTable(
name="teacher_stu",
joinColumns={@JoinColumn(name="teacher_Id")},
inverseJoinColumns={@JoinColumn(name="stu_Id")}
)
public Set<Student> getStu() {
return stu;
}
}
@Entity
public class Student {
private int id;
private String name;
@Id
@GeneratedValue
public int getId() {
return id;
}
}