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
实例,并在用户提交客户编辑界面后的同一事务中清除对该实例的引用。