7.1.2.2. 一对多:二级嵌套
组合关系可以更深,但是最多到两个嵌套级别,我们通过添加用于描述航站楼汇合点的 MeetingPoint
实体来扩展前一个示例:
Terminal
实体包含 meetingPoints
属性 – 一个 MeetingPoint
实例的集合。为了使所有三个实体成为一个组合并一起编辑,除了之前描述的步骤外,还应完成以下步骤:
Terminal.java -
Terminal
类的meetingPoints
属性带有@Composition
和@OnDelete
注解,跟Airport
类的terminals
属性类似。views.xml -
Terminal
类的terminal-meetingPoints-view
视图包含meetingPoints
集合属性。该视图在Airport
实体的airport-terminals-meetingPoints-view
视图中使用。airport-edit.xml -
Airport
编辑界面 XML 描述,包含Airport
的实例的数据源和整个组合(airportDs
>terminalsDs
>meetingPointsDs
)的嵌套实体。
这里,meetingPointsDs
数据源不与任何可视化组件关联,但是用于正确处理组合的联合编辑。
- terminal-edit.xml - 航站楼编辑界面 XML 描述,包含嵌套数据源以及对应于
meetingPoints
集合的表格。
这样,更新的 MeetingPoint
实例以及 Terminal
实例将仅与 Airport
实例在同一事务中一起保存到数据库。