【发布时间】:2012-01-07 14:17:15
【问题描述】:
虽然我写了这个问题,但我想出了一个解决方案,但我还是要问。也许有更简单的方法。
我想从两个表中创建一个关联表。
我们称它们为学生和课程。两者都有一个 ID 和一个唯一的名称。
我想要的是第三张表(student_id 到 course_id),当我插入正在上课的学生时,它会自动更新。
这几乎是我找到here: Hibernate Many-to-Many with Annotations 的以下示例,但我将@Table 注释更改为@Table(name = "STUDENT",
uniqueConstraints = {@UniqueConstraint(columnNames = {"STUDENT_NAME" })})
课程也是如此。
我插入第一个学生
Set<Course> courses = new HashSet<Course>();
courses.add("Math); courses.add("Science");
Student alice = new Student("alice", courses);
另一个学生来了
Student bob= new Student("bob", courses);
它崩溃是因为课程表中已经存在科学和数学课程,并且student_to_course表不会更新。
我所知道的是在课程表中查询具有此名称的课程。如果有,我将其添加到学生课程中,否则添加新的。
List<Course> list = session.createCriteria(Course.class)
.add(Restrictions.eq("courseName", "Maths")).list();
if (list.size() > 0){
courses.add(list.get(0));
}
else {
courses.add(new Course("Maths"));
}
s.setCourses(courses);
所以这行得通,但我认为必须有更好的方法来做到这一点。
如果表中已经有同名的课程,有没有办法告诉hibernate从课程表中将课程添加到学生?
【问题讨论】:
标签: java hibernate many-to-many