我在层次结构中有三个实体1)老师2)学生3)主题
在教师实体中,与学生班级存在一对多关系。学生班与学科班有OneToMany关系。
我有一个特殊的情况,老师有5个学生,而学生有许多科目分配给他们。我正在从教师实体中获取教师实体并从中获取学生列表。在5中,我要使用remove()函数从列表中删除一个Student实体。保存教师实体时,出现错误为
** java.lang.IllegalArgumentException:删除StudentSubject的分离实例**这里StudentSubject是Student的子实体。

public class Teacher {

@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy="studentCode", orphanRemoval = true)
@org.hibernate.annotations.Fetch(org.hibernate.annotations.FetchMode.SELECT)
@org.hibernate.annotations.BatchSize(size=30)
private List<Student> students = new ArrayList<Student>();

}

public class Student {

@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy="studentSubjectCode", orphanRemoval = true)
@org.hibernate.annotations.Fetch(org.hibernate.annotations.FetchMode.SELECT)
@org.hibernate.annotations.BatchSize(size=30)
private List<StudentSubject> studentsubjects = new ArrayList<StudentSubject>();

}


public class StudentSubject {


}


任何帮助是极大的赞赏。

最佳答案

经过调试和更多探索之后,我找到了解决此问题的方法。
在从父母名单中删除学生实体之前,我刷新了该实体。然后,StudentSubject数组的所有引用都变为活动状态,从而解决了在保存Teacher对象的同时分离实体的问题。

09-05 10:53