国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Hibernate Student_Course_Score設計

2019-11-14 20:50:36
字體:
來源:轉載
供稿:網友
Hibernate Student_Course_Score設計

示例

設計代碼,實現在數據庫中建student表、course表、和score表,展現三者關系

student表:id、name

course表:id、name

score表:id、score、student_id、course_id

三張表的關聯關系如下:

2

設計思路

1.首先創建Student實體類和Course實體類

會自動創建中間表,通過@JoinTable注解,設置中間表名為“score”,屬性名分別為“student_id”和“course_id”

@ManyToMany@JoinTable(name="score",    joinColumns={@JoinColumn(name="student_id")},    inverseJoinColumns={@JoinColumn(name="course_id")})

2.創建實體類Score

    PRivate int id;     private int score;     private Student student;     private Course course;

根據步驟1中創建的中間表,通過@Table注解設置表名為“score”,

通過@ManyToOne注解設置屬性名分別為“student_id”和“course_id”

3.Junit測試類

@Testpublic void test() {    new SchemaExport(new Configuration().configure()).create(true, true);}

 

具體實現代碼如下

1.Student類

@Entitypublic class Student {private int id;private String name;private Set<Course> courses = new HashSet<Course>();@Id@GeneratedValuepublic int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}@ManyToMany@JoinTable(name="score",                                                 //中間表名joinColumns={@JoinColumn(name="student_id")},            //屬性名inverseJoinColumns={@JoinColumn(name="course_id")})      //屬性名public Set<Course> getCourses() {return courses;}public void setCourses(Set<Course> courses) {this.courses = courses;}}

2.Course類

@Entitypublic class Course {private int id;private String name;@Id@GeneratedValuepublic int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}}

3.Score類

@Entity@Table(name="score")      //對應中間表名public class Score {private int id;private int score;private Student student;private Course course;@Id@GeneratedValuepublic int getId() {return id;}public void setId(int id) {this.id = id;}public int getScore() {return score;}public void setScore(int score) {this.score = score;}@ManyToOne@JoinColumn(name="student_id")    //對應屬性名public Student getStudent() {return student;}public void setStudent(Student student) {this.student = student;}@ManyToOne()@JoinColumn(name="course_id")    //對應屬性名public Course getCourse() {return course;}public void setCourse(Course course) {this.course = course;}}

4.存儲一條數據

@Testpublic void testsave() {session session = sf.getCurrentSession();session.beginTransaction();Student s = new Student();s.setName("lisi");Course c = new Course();c.setName("c++");Score score = new Score();score.setStudent(s);score.setCourse(c);//score.setScore(90);  //若不設置,默認為0session.save(s);session.save(c);session.save(score);session.getTransaction().commit();}

注意

create table score (id integer not null, score integer not null, course_id integer, student_id integer not null auto_increment, primary key (student_id, course_id)) 運行程序,會發現通過程序自動建的score表是有問題的。 我們想要的是,id為主鍵,且自增 而結果是,student_id和course_id為聯合主鍵,且student_id自增 這是hibernate自身的bug,所以應該手動去數據庫中,修改表的結構

上一篇:Java的優先級

下一篇:Ubuntu14.04安裝JDK

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 郑州市| 苗栗县| 田林县| 万载县| 澜沧| 聊城市| 象山县| 巨野县| 荔浦县| 榆林市| 乌兰县| 都兰县| 信丰县| 盘山县| 泾阳县| 嘉鱼县| 额尔古纳市| 吴川市| 广汉市| 七台河市| 华坪县| 启东市| 钟山县| 南阳市| 水城县| 绵竹市| 佛坪县| 桃源县| 临夏市| 正蓝旗| 珲春市| 和政县| 儋州市| 松阳县| 柞水县| 尼勒克县| 巴南区| 垫江县| 荔浦县| 广东省| 宁陕县|