使用hibernate ManyToMany关系从集合中删除Object

时间:2016-09-21 19:59:58

标签: java hibernate

有人会帮忙吗?

我正在从hibernate ManyToMany协会的课程中删除教师时遇到问题。我可以在课程中添加教师但不能删除它。我有一个视图,显示课程及其相关教师的模型。当我坚持一位新老师并将他加入课程时,一切正常。但是当我删除老师时,视图仍然会与老师一起显示课程。

// inside the teacher class
@ManyToMany(mappedBy = "teachers")
private Set<Course> courses = new HashSet<>();

// inside the course class
@ManyToMany(cascade = {CascadeType.ALL})
@JoinTable(name="COURSE_TEACHERS",
    joinColumns={@JoinColumn(name="COURSE_ID")},
    inverseJoinColumns={@JoinColumn(name="ID")})
private Set<Teacher> teachers = new HashSet<>();

//here is how I am trying to remove the teacher from the course
@Override
public void removeTeacherFromCourse(Course course, Teacher teacher) {
    course.getTeachers().remove(teacher);
    updateCourse(course);   
}

1 个答案:

答案 0 :(得分:0)

您遇到的问题是您对教师进行级联更改,但不会对课程进行级联更改。如果你从另一个角度来解决这个问题,那么你的期望也应该如此。

您不需要从课程中删除教师,而是需要从教师中删除课程,让Hibernate以这种方式级联更改。

JoinTable

这是因为您在哪里放置了注释。因为您已经为教师设置了dependencies { androidTestCompile 'com.jayway.android.robotium:robotium-solo:5.6.1' testCompile 'junit:junit:4.12' } 声明,这就是“拥有”的对象的一面。关系。您需要在该侧进行所有操作,以便将更改级联到其他对象。