Hibernate使用联接表正确删除孤立项-单向

Hibernate使用联接表正确删除孤立项-单向,hibernate,Hibernate,我研究了几个关于hibernate一对多单向关系的示例,但找不到如何从现有列表中删除孤立级联 假设我有一个类MyClass @OneToMany(fetch=FetchType.LAZY, cascade={ CascadeType.PERSIST, CascadeType.REMOVE}, orphanRemoval=true) @org.hibernate.annotations.Cascade(org.hib

我研究了几个关于hibernate一对多单向关系的示例,但找不到如何从现有列表中删除孤立级联

假设我有一个类MyClass

@OneToMany(fetch=FetchType.LAZY, cascade={
                    CascadeType.PERSIST, 
                    CascadeType.REMOVE}, orphanRemoval=true)
@org.hibernate.annotations.Cascade(org.hibernate.annotations.CascadeType.SAVE_UPDATE)
@JoinTable(name="enrolled_student", 
        joinColumns = {@JoinColumn(name="Class_ID")},
        inverseJoinColumns = {@JoinColumn(name="STUDENT_ID") })
public List<Student> getStudentList() { return studentList;}
public void setStudentList(List<Student> studentList) { this.studentList = studentList;}
private List<Student> List;
因此,我尝试合并
myclass
实体,以防止加载学生列表时出现LazyInitializeVoolation。然后我从列表中删除该学生并更新列表。但它不断抛出一个
NullPointerException

我试图通过删除student表中的行来解决此问题,方法如下:

public void deleteStudent(Student student) {
   studentDao.delete(student);
} 
这也是无效的,因为该学生也存在于已注册的学生表中


请告诉我删除孤儿的正确方法好吗

NPE的堆栈跟踪是?所有这些合并和更新调用是什么?启动一个事务,获取MyClass实例,从列表中删除学生,然后提交事务。我想我做了你建议的事情。为了防止lazinitializedexecption,我需要合并以获得具有相同标识符的持久实例,然后从中从列表中删除student并再次更新实例。堆栈跟踪帮不了什么忙。它帮不了你。但你在这里寻求帮助,希望找到比你更了解的专家。隐藏关键信息不是一个好办法。我重复一遍:附加的实体是。。。阿塔奇。它们的状态将自动持久化。对classDao.update()的调用是无用的。
public void deleteStudent(Student student) {
   studentDao.delete(student);
}