7.1.2.4. 一对一组合

在线示例

一对一组合将通过 CustomerCustomerDetails 实体说明:

composition recipe 3

  • Customer.java - Customer 实体包含一个到 CustomerDetails 实体的引用属性,并且使用了 @Composition 注解。

  • CustomerDetails.java - CustomerDetails 实体。

  • customer-edit.xml - 客户编辑界面描述。包含指向 CustomerDetails 实例的嵌套数据源。为了加载嵌套实例,根数据源使用了一个包含 details 属性的 Customer 实体的视图。客户编辑界面中的字段组仅定义一个用于显示 details 属性的字段。

这样,客户编辑的工作方式如下:

composition recipe oto 1

  • 当调用打开操作时,会创建一个新的 CustomerDetails 实例并显示其编辑界面。在详细信息编辑界面中点击 OK 时,详细信息实例不会保存到数据库中,而是保存到客户编辑界面的 detailsDs 数据源中。

  • 选择器字段显示细节实体的实例名

composition recipe oto 2

  • 当用户在客户编辑界面中点击 OK 时,更新后的 Customer 实例与 CustomerDetails 实例一起被提交到中间层的 DataManager.commit() 方法并使用单个事务保存到数据库中。

  • 如果用户调用选择器字段的清除操作,则会删除 CustomerDetails 实例,并在用户提交客户编辑界面后的同一事务中清除对该实例的引用。