gpt4 book ai didi

java - 从具有 hibernate ManyToMany 关系的集合中删除对象

转载 作者:太空宇宙 更新时间:2023-11-04 12:13:43 24 4
gpt4 key购买 nike

有人可以帮忙吗?

我目前在从 hibernate ManyToMany 关联的类(class)中删除教师时遇到问题。我可以向类(class)添加教师,但无法将其删除。我有一个 View ,显示包含类(class)及其关联教师的模型。当我坚持一位新老师并将他添加到类(class)中时,一切正常。但是当我删除老师时, View 仍然显示有老师的类(class)。

// 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);
}

最佳答案

您遇到的问题是您对教师进行了级联更改,但没有对类(class)进行级联更改。如果您从另一个角度来看待这个问题,它也应该按照您的预期工作。

您不需要从类(class)中删除教师,而是需要从教师中删除类(class),并让 Hibernate 以这种方式级联更改。

@Override
public void removeTeacherFromCourse(Course course, Teacher teacher) {
teacher.getCourses().remove(course);
updateTeacher(teacher);
}

这是因为您放置注释的位置。因为您已在教师上设置了 JoinTable 声明,所以这是对象“拥有”关系的一侧。您需要在那一侧完成所有操作,以便更改能够级联到其他对象。

关于java - 从具有 hibernate ManyToMany 关系的集合中删除对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39625543/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com