hibernate--Student_Course_Score设计

红太狼 2024-02-18 15:00 151阅读 0赞

方式1、中间表Score使用联合主键,采用联合主键的方式稍微繁杂,这里不采用。

方式2、中间表Score不使用联合主键,即添加id作为主键。

Center

Student.java:

  1. package com.bean;
  2. import java.util.HashSet;
  3. import java.util.Set;
  4. import javax.persistence.CascadeType;
  5. import javax.persistence.Entity;
  6. import javax.persistence.FetchType;
  7. import javax.persistence.GeneratedValue;
  8. import javax.persistence.Id;
  9. import javax.persistence.JoinColumn;
  10. import javax.persistence.JoinColumns;
  11. import javax.persistence.JoinTable;
  12. import javax.persistence.ManyToMany;
  13. import javax.persistence.OneToMany;
  14. @Entity
  15. public class Student {
  16. private int id;
  17. private String name;
  18. private Set<Score> scores = new HashSet<Score>();
  19. private Set<Course> courses = new HashSet<Course>();
  20. @OneToMany(mappedBy="student",cascade=CascadeType.ALL,fetch=FetchType.EAGER)
  21. public Set<Score> getScores() {
  22. return scores;
  23. }
  24. public void setScores(Set<Score> scores) {
  25. this.scores = scores;
  26. }
  27. @ManyToMany(cascade=CascadeType.ALL,fetch=FetchType.EAGER)
  28. @JoinTable(name="score",
  29. joinColumns=@JoinColumn(name="student_id"),
  30. inverseJoinColumns = @JoinColumn(name="course_id")
  31. )
  32. public Set<Course> getCourses() {
  33. return courses;
  34. }
  35. public void setCourses(Set<Course> courses) {
  36. this.courses = courses;
  37. }
  38. @Id
  39. @GeneratedValue
  40. public int getId() {
  41. return id;
  42. }
  43. public void setId(int id) {
  44. this.id = id;
  45. }
  46. public String getName() {
  47. return name;
  48. }
  49. public void setName(String name) {
  50. this.name = name;
  51. }
  52. }

Score.java:

  1. package com.bean;
  2. import javax.persistence.CascadeType;
  3. import javax.persistence.Entity;
  4. import javax.persistence.GeneratedValue;
  5. import javax.persistence.Id;
  6. import javax.persistence.JoinColumn;
  7. import javax.persistence.ManyToOne;
  8. import javax.persistence.Table;
  9. @Entity
  10. @Table(name="score")
  11. public class Score {
  12. private int id;
  13. private int grade;
  14. private Student student;
  15. private Course course;
  16. @Id
  17. @GeneratedValue
  18. public int getId() {
  19. return id;
  20. }
  21. public void setId(int id) {
  22. this.id = id;
  23. }
  24. public int getGrade() {
  25. return grade;
  26. }
  27. public void setGrade(int grade) {
  28. this.grade = grade;
  29. }
  30. @ManyToOne(cascade=CascadeType.ALL)
  31. @JoinColumn(name="student_id")
  32. public Student getStudent() {
  33. return student;
  34. }
  35. public void setStudent(Student student) {
  36. this.student = student;
  37. }
  38. @ManyToOne(cascade=CascadeType.ALL)
  39. @JoinColumn(name="course_id")
  40. public Course getCourse() {
  41. return course;
  42. }
  43. public void setCourse(Course course) {
  44. this.course = course;
  45. }
  46. }

Course.java:

  1. package com.bean;
  2. import java.util.HashSet;
  3. import java.util.Set;
  4. import javax.persistence.CascadeType;
  5. import javax.persistence.Entity;
  6. import javax.persistence.GeneratedValue;
  7. import javax.persistence.Id;
  8. import javax.persistence.ManyToMany;
  9. @Entity
  10. public class Course {
  11. private int id;
  12. private String name;
  13. @Id
  14. @GeneratedValue
  15. public int getId() {
  16. return id;
  17. }
  18. public void setId(int id) {
  19. this.id = id;
  20. }
  21. public String getName() {
  22. return name;
  23. }
  24. public void setName(String name) {
  25. this.name = name;
  26. }
  27. }

发表评论

表情:
评论列表 (有 0 条评论,151人围观)

还没有评论,来说两句吧...

相关阅读

    相关 设计原则、设计模式

    设计原则 面向对象是一种编程思维,是我们分析问题设计模型的一种思路。从本质上看,是没有绝对的对与错的。但是,不同的设计方式还有高低之分的。而判断的标准是什么呢? 1、最

    相关 设计模式——设计原则

    面向对象原则、OOD和OOP概述 面向对象原则和OOD实际上是两个不同的方面。  面向对象原则:封装、继承、多态。 OOP指的是面向对象编程的基本原则和核心思路。在这

    相关 设计模式——设计原则

      不管何种设计模式,其实都会遵守一些设计原则,这些设计原则可以理解为面向对象的一些精髓,只有遵守这些设计原则,设计模式才会变得精彩!   (1)单一职责原则——就一个类而言