java.lang.IllegalArgumentException:删除StudentSubject的分离实例

时间:2015-02-12 08:32:13

标签: java hibernate jpa

我在层次结构1中有三个实体)教师2)学生3)主题 在教师实体中,OneToMany与学生班级的关系。 Student类与Subject类具有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 {


}

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

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