模型
学院—1——n—班级—1——n—学生

界面

学院—班级:在视图中用TreeViewer进行组织。当用户双击班级时,打开班级的Editor。CollegeClass中的Students采用延迟加载,否则会加载大量的Student对象。
班级—学生:在以FormEditor进行组织。学生列表以TableViewer显示,单击一条,在DetailView中显示学生信息。在EditorInput初始化时,从后台重新加载CollegeClass对象,并取出Student,EJBQL为
from CollegeClass o left join fetch o.students where o.id = :id
关联更新
1.班级对象级联更新学生对象
添加和删除学生对象直接对CollegeClass#List<Student> students字段直接操作。要产生级联更新(删除)的效果,需要添加Hibernate anntotation:
@OneToMany(mappedBy = "collegeClass", cascade = CascadeType.ALL)
@org.hibernate.annotations.Cascade(org.hibernate.annotations.CascadeType.DELETE_ORPHAN)
public List<Student> getStudents()
return students;
}
编辑学生信息直接merge即可。
2.视图与编辑器之间的关联更新

本文探讨了一对多关系的模型设计,如学院-班级-学生的层级结构。在界面展示上,学院与班级通过TreeViewer展示,班级与学生使用TableViewer。在编辑学生信息时,借助Hibernate的级联更新功能实现数据同步。同时,文章提到了视图与编辑器间的关联更新问题,当班级名称改变时,需要协调两者间的模型更新。在删除班级时,需要考虑关闭对应的编辑器。作者对于当前模式感到不满,期待改进建议。
最低0.47元/天 解锁文章
2854





