7.1.4. 实体继承

在线示例

本节演示如何在 CUBA 应用程序中使用实体继承。

让我们假设我们有两种类型的客户 - 公司和个体,它们有一些共同的属性。我们希望将公共属性存储在一个表中并使用单独的关联表来存储这些特定的属性。

因此,数据模型包含 Client 实体,它是存储在 SAMPLE_CLIENT 基础表中的基类。CompanyPerson 实体分别存储在具有引用基础表外键的单独表中。

Order 实体引用了 Client。由于客户可以是不同类型,当用户创建订单时,应该能够选择客户的类型。

inheritance

Client.java 实体:

  • 继承策略设置为 JOINED

  • 辨别(Discriminator)列名称 DTYPE 和类型 String 保留为默认值

  • 辨别值设置为 C

Company.java 实体:

  • 父类设置为 Client

  • 辨别值设置为 M

Person.java 实体:

  • 父类设置为 Client

  • 辨别值设置为 P

OrderEdit.java 界面控制器包含客户选择组件和逻辑。