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 实例在同一事务中一起保存到数据库。