这是我的课
class Teacher {
@OneToMany(fetch=FetchType.LAZY, cascade=CascadeType.ALL, orphanRemoval=true)
Set<Students> getStudents()
}
问题是,
第 1 节
第一步:获取Teacher id = 1,在同一个会话中调用session.initializeCollection(teacher.children)初始化学生
第 2 步:添加一个新学生 (id =1)
步骤 3:合并教师实例以插入添加的学生
第 2 节:
第 1 步:在会话 1 的第 2 步之前获取教师 id = 1。使用 intializeCollection(teacher.children) 初始化孩子
第 2 步:执行合并以在 Session 1 中完成任何更改(在第 3 步之后)
//在这一步,hibernate id对Teacher进行更新并删除Student 1
步骤3:添加另一个学生(id = 2)并合并教师以保存学生(id = 2)
我假设当在步骤 2 中完成合并 2 时,它会导致集合在会话 1 中完成的更改被刷新,即将新对象从会话 1 添加到会话 2,子集合。
有人可以解释为什么会发生这种情况以及应该如何处理该对象,以便在第 2 次会话中,通过对表的任何更改来刷新学生集合,即将任何子对象添加到表中?
还要注意一下,在第 1 步之后,教师对象是一个分离的实例,因为该对象被传递到基于 Web 的视图层并在第 2 步中修改并在第 3 步中重新附加