Hibernate學習筆記_09_單向聯合組建外部索引鍵關聯關係

來源:互聯網
上載者:User

情境描述:學生與成績之間是單向關係,成績由課程編號和開課學期來決定。

1、首先編寫聯合主鍵類。

package com.hibernate._0900_oneToone_uni_fk_composite;import java.util.Date;public class ScorePK implements java.io.Serializable{private String courseID;private Date data;    //開課學期public String getCourseID() {return courseID;}public void setCourseID(String courseID) {this.courseID = courseID;}public Date getData() {return data;}public void setData(Date data) {this.data = data;}}

聯合主鍵類必須實現Serializable介面。


2、編寫成績類。

package com.hibernate._0900_oneToone_uni_fk_composite;import java.util.Date;import javax.persistence.Entity;import javax.persistence.Id;import javax.persistence.IdClass;@Entity@IdClass(ScorePK.class)public class Score {private String courseID;private Date data;    //開課學期private String courseName;@Idpublic String getCourseID() {return courseID;}public void setCourseID(String courseID) {this.courseID = courseID;}@Idpublic Date getData() {return data;}public void setData(Date data) {this.data = data;}public String getCourseName() {return courseName;}public void setCourseName(String courseName) {this.courseName = courseName;}}

設定@IdClass來指定聯合主鍵類,並將作為聯合主鍵的屬性都註解為@Id。這個類中的聯合主鍵屬性應該和作為聯合主鍵類中的屬性名稱和類型一致。

3、編寫學生類。

package com.hibernate._0900_oneToone_uni_fk_composite;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id;import javax.persistence.JoinColumn;import javax.persistence.JoinColumns;import javax.persistence.OneToOne;@Entitypublic class Student {private Integer id;private String name;private Score score; @Id@GeneratedValuepublic Integer getId() {return id;}public String getName() {return name;}@OneToOne    //設定關聯關係@JoinColumns(   {@JoinColumn(name="c_id",referencedColumnName="courseID"),@JoinColumn(name="c_name",referencedColumnName="courseName")}   )public Score getScore() {return score;}public void setId(Integer id) {this.id = id;}public void setName(String name) {this.name = name;}public void setScore(Score score) {this.score = score;}}

設定關聯關係,可以用@JoinColumns註解來修改屬性在資料庫中對應的欄位名稱。@JoinColumns接受的參數是一個JoinColumn類型的數組,聯合主鍵時,需要用referencedColumnName來指定哪個欄位名對應類中的哪個屬性。


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.