7.1.2.4. 一对一组合
一对一组合将通过 Customer 和 CustomerDetails 实体说明:
-
Customer.java -
Customer实体包含一个到CustomerDetails实体的引用属性,并且使用了@Composition注解。 -
CustomerDetails.java -
CustomerDetails实体。 -
customer-edit.xml - 客户编辑界面描述。包含指向
CustomerDetails实例的嵌套数据源。为了加载嵌套实例,根数据源使用了一个包含details属性的Customer实体的视图。客户编辑界面中的字段组仅定义一个用于显示details属性的字段。
这样,客户编辑的工作方式如下:
-
客户编辑界面包含 PickerField 组件,其中包含两个操作: OpenAction 和 ClearAction:
-
当调用打开操作时,会创建一个新的
CustomerDetails实例并显示其编辑界面。在详细信息编辑界面中点击 OK 时,详细信息实例不会保存到数据库中,而是保存到客户编辑界面的detailsDs数据源中。 -
选择器字段显示细节实体的实例名。
-
当用户在客户编辑界面中点击 OK 时,更新后的
Customer实例与CustomerDetails实例一起被提交到中间层的DataManager.commit()方法并使用单个事务保存到数据库中。 -
如果用户调用选择器字段的清除操作,则会删除
CustomerDetails实例,并在用户提交客户编辑界面后的同一事务中清除对该实例的引用。