hibernate多對多關聯

多對多雙向關聯:一個老師可以教很多學生,一個學生也可以被很多老師教。這是多對多。

@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;
    }

}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章