学生:
@Entity public class Student { private int id; private String name; private Set<Course> courses = new HashSet<Course>(); @Id @GeneratedValue public 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",//与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; } }
课程:
@Entity public class Course { private int id; private String name; @Id @GeneratedValue public 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; } }
成绩:
@Entity @Table(name="score") public class Score { private int id; private int score; private Student student; private Course course; @Id @GeneratedValue public int getId() { return id; } public void setId(int id) { this.id = id; } @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; } public int getScore() { return score; } public void setScore(int score) { this.score = score; } }
junit:
public class TestTree { private static SessionFactory sf; @Before public void beforeTest(){ sf = new Configuration().configure().buildSessionFactory(); } @After public void afterTest(){ sf.close(); } @Test public void testSave(){ Student s = new Student(); s.setName("张三"); Course yuwen = new Course(); yuwen.setName("语文"); Score score = new Score(); score.setCourse(yuwen); score.setStudent(s); score.setScore(90); Session sess = sf.getCurrentSession(); sess.beginTransaction(); sess.save(s); sess.save(yuwen); sess.save(score); sess.getTransaction().commit(); } @Test public void testLoad(){ Session sess = sf.getCurrentSession(); sess.beginTransaction(); Student s = (Student)sess.load(Student.class, 2); for(Course c : s.getCourses()){ System.out.println(c.getName()); } sess.getTransaction().commit(); } }