Hibernate-----一對多關聯映射(註解)

來源:互聯網
上載者:User

標籤:hibernate   註解   一對多   多對一   關聯映射   

雙向1-N:一般在‘一’的一端用mappedBy屬性反轉;把維護端交給‘多’的一端

 

One

import javax.persistence.CascadeType;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.GenerationType;import javax.persistence.Id;import javax.persistence.OneToMany;import javax.persistence.Table;@Entity@Table(name = "t_classes")public class Classes implements Serializable {    private int id;    private String name;     private Set<Student> students;     @Id    @GeneratedValue(strategy = GenerationType.AUTO)    public int getId() {       return id;    }     public void setId(int id) {       this.id = id;    }     @Column(name = "name")    public String getName() {       return name;    }     public void setName(String name) {       this.name = name;    } // mappedBy定義在Classes中,Classes類將不負責維護級聯關係.維護者交由Student.所以    // 1.要將Clsses的資料,賦給Student(用Student的setClasses()方法去捆定class資料)    // 2.在進行資料插入/更新時,最後操作的是Student(維護端)    @OneToMany(cascade = CascadeType.REMOVE, fetch = FetchType.LAZY, mappedBy = "classes")    public Set<Student> getStudents() {       return students;    }     public void setStudents(Set<Student> students) {       this.students = students;    }}

Many

import javax.persistence.JoinColumn;import javax.persistence.ManyToOne;@Entity@Table(name = "t_student")public class Student implements Serializable {    private int sid;    private String sname;     private Classes classes;     @Id    @GeneratedValue(strategy = GenerationType.AUTO)    public int getSid() {       return sid;    }     public void setSid(int sid) {       this.sid = sid;    }     @Column(name = "sname")    public String getSname() {       return sname;    }     public void setSname(String sname) {       this.sname = sname;    }     // 多個cascade:{CascadeType.PERSIST,CascadeType.MERGE}    // 在多的一端指定外鍵(class_id)    @ManyToOne(cascade = { CascadeType.ALL })    @JoinColumn(name = "class_id")    public Classes getClasses() {       return classes;    }     public void setClasses(Classes classes) {       this.classes = classes;    }}


 

因為一端維護關係另一端不維護關係的原因,必須注意避免在應用中用不維護關係的類(class)建立關係,因為這樣建立的關係是不會在資料庫中儲存的(應先儲存非維護端,最後儲存維護端)




Hibernate-----一對多關聯映射(註解)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.