2015-02-12 50 views
0

我在层次结构中有三个实体1)Teacher 2)Student 3)Subject 在Teacher Entity中存在与Student类的OneToMany关系。学生类与Subject类具有OneToMany关系。 我有特定的情况,其中教师有5名学生和学生有许多科目分配给他们。我从教师实体中提取教师实体并从中提取学生名单。 5个中,我使用remove()函数从列表中删除一个学生实体。保存教师实体时,出现错误为 ** java.lang.IllegalArgumentException:删除StudentSubject的分离实例**此处StudentSubject是Student的子实体。java.lang.IllegalArgumentException:删除StudentSubject的分离实例

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

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