马老师说这个作业很重要,所以整理下思路。
题目:student,course,score的设计。
1.分析三者关系:
student --------course ManyToMany,joinTable(name=score,joinColumn=@JoinColumn(name="student_id"),inverseJoinColumn=@JoinColumn(name="course_id"))
student--------score ManyToOne,@JoinColumn(name="student_id")
course--------score ManyToOne.@JoinColumn(name="course_id")
以上就是三者的关系,根据这个就可以写代码了。
2.具体设计:
student : id,name,
@ManyToMany
Set<Course> courses
course: id ,name.
score: id
@ManyToOne @JoinColumn(name="student_id")
student
@ManyToOne @JoinColumn(name="course_id")
course
其中score要自己建表,建表语句如下:
create table score(id int primary key,student_id references student(id),course_id references course(id),score int);
3,测试
根据以上内容可以实现了。测试类也很好写,贴过来代码吧。testSave()方法的内容:
Session session = sf.getCurrentSession();
session.beginTransaction();
Student s = new Student();
Course c = new Course();
Score score = new Score();
s.setName("student");
c.setName("course");
score.setStudent(s);
score.setCourse(c);
session.save(score);
session.getTransaction().commit();