ER diagram
------
Student.java
Course.java
@JoinTable annotation is declared in the POJO class that owns the relationship. since this is many to many relationship, both class own the relationship. therefore @JoinTable annoatation is declared in the both classes. (therefore referential integrity constraint will be accurately maintained)
hope this will helpful for you!
------
Student.java
package org.convey.user.registration.model; import javax.persistence.*; import java.util.List; /** * Name: Chathuranga Tennakoon * Mobile: 0094759610139 * Blog: chathurangat.blogspot.com * Email: chathuranga.t@gmail.com */ @Entity @Table(name="student") public class Student { @Id @GeneratedValue @Column(name = "student_id") private int studentId; @Column(name="student_name") private String studentName; @Column(name="student_address") private String studentAddress; @Column(name="version") private long version; @ManyToMany @JoinTable( name="student_course", joinColumns = {@JoinColumn(name = "studentID",referencedColumnName = "student_id")}, inverseJoinColumns = {@JoinColumn(name = "courseID", referencedColumnName = "course_id")}) private Listcourses; public int getStudentId() { return studentId; } public void setStudentId(int studentId) { this.studentId = studentId; } public String getStudentName() { return studentName; } public void setStudentName(String studentName) { this.studentName = studentName; } public String getStudentAddress() { return studentAddress; } public void setStudentAddress(String studentAddress) { this.studentAddress = studentAddress; } public long getVersion() { return version; } public void setVersion(long version) { this.version = version; } public List getCourses() { return courses; } public void setCourses(List courses) { this.courses = courses; } }
Course.java
package org.convey.user.registration.model; import javax.persistence.*; import java.util.List; /** * Name: Chathuranga Tennakoon * Mobile: 0094759610139 * Blog: chathurangat.blogspot.com * Email: chathuranga.t@gmail.com */ @Entity @Table(name="course") public class Course { @Id @GeneratedValue @Column(name="course_id") private int courseId; @Column(name="course_name") private String courseName; @Column(name="course_description") private String courseDescription; @Column(name="version") private long version; @ManyToMany @JoinTable( name="student_course", joinColumns = {@JoinColumn(name = "courseID",referencedColumnName = "course_id")}, inverseJoinColumns = {@JoinColumn(name = "studentID", referencedColumnName = "student_id")}) private List<Student> students; public int getCourseId() { return courseId; } public void setCourseId(int courseId) { this.courseId = courseId; } public String getCourseName() { return courseName; } public void setCourseName(String courseName) { this.courseName = courseName; } public String getCourseDescription() { return courseDescription; } public void setCourseDescription(String courseDescription) { this.courseDescription = courseDescription; } public long getVersion() { return version; } public void setVersion(long version) { this.version = version; } public List<Student> getStudents() { return students; } public void setStudents(List<Student> students) { this.students = students; } }//course
- Student can register for many courses.
- A given course has many registered students
@JoinTable annotation is declared in the POJO class that owns the relationship. since this is many to many relationship, both class own the relationship. therefore @JoinTable annoatation is declared in the both classes. (therefore referential integrity constraint will be accurately maintained)
hope this will helpful for you!
No comments:
Post a Comment