一对一

一对一关系表示两个实体之间存在一对一的关联

@OneToOne

relatedProperty 关联字段

relatedValue 关联值

没有JoinColumn方不生成字段。

示例代码2:

  @OneToOne(relatedProperty = "type", relatedValue = "0")
  private DYMysql dyMysql;
  
  @OneToOne(relatedProperty = "type", relatedValue = "1")
  private DYOracle dyOracle;

在JoinColumn方生成字段,生成外键。

示例代码1:

  @OneToOne
  @JoinColumn(name = "data_source_id", referencedProperty = "id")
  private DYDataSource dyDataSource;

@JoinColumn

辅助注解,作用于@man2one 和 @one2one

name 字段名

referencedProperty 关联字段默认id

dynamicGroup

columns: [{ …… }]

动态分组dynamicGroup

 {
    "displayName": "type",
    "name": "type",
    "dynamicGroup": {
      "options": [
        {
          "label": "mysql",
          "value": "0",
          "relatedProperty": "dyMysql"
        },
        {
          "label": "oracle",
          "value": "1",
          "relatedProperty": "dyOracle"
        }
      ]
    }
  }

ER注解需要配置custom,display ,hidden

搜索,表单,display: false

 {
    "displayName": "dyMysql",
    "name": "dyMysql",
    "display": false,
    "custom": true
  }

表格,hidden : true

{
"displayName": "dyMysql",
"name": "dyMysql",
"custom": true,
"hidden": true
}

demo工程

DYDataSource

@Model(type = Model.ModelType.Buss, name = "DYDataSource", tableName = "dy_data_source", displayName = "数据源")
public class DYDataSource extends BaseModel<DYDataSource> {
    @Property(columnName = "name")
    private String name;

    @Property(columnName = "type")
    @Selection(values = {@Option(label = "mysql", value = "0"), @Option(label = "oracle", value = "1")})
    private String type;

    @Property(columnName = "url")
    private String url;

    @OneToOne(relatedProperty = "type", relatedValue = "0")
    private DYMysql dyMysql;

    @OneToOne(relatedProperty = "type", relatedValue = "1")
    private DYOracle dyOracle;

    @Property(columnName = "file_name", dataType = DataType.FILE)
    private String fileName;


    @ManyToOne
    @JoinColumn(name = "many2one_id")
    private Many2one many2one;



    @OneToMany
    private List<Ono2Many> ono2ManyList;


    @ManyToMany
    @JoinTable(name = "many2many_id", joinColumns = @JoinColumn(name = "dy_many2many_id"), inverseJoinColumns = @JoinColumn(name = "many2many_id"))
    private List<Many2Many> many2ManyList;

}

DyDataSource_view.json

{
  "views": {
    "dydatasource_form": {
      "body": {
        "columns": [
          {
            "displayName": "name",
            "name": "name"
          },
          {
            "displayName": "type",
            "name": "type",
            "dynamicGroup": {
              "options": [
                {
                  "label": "mysql",
                  "value": "0",
                  "relatedProperty": "dyMysql"
                },
                {
                  "label": "oracle",
                  "value": "1",
                  "relatedProperty": "dyOracle"
                }
              ]
            }
          },
          {
            "displayName": "url",
            "name": "url"
          },
          {
            "displayName": "port",
            "name": "dyMysql.port"
          },
          {
            "displayName": "a",
            "name": "dyMysql.a"
          },
          {
            "displayName": "a1",
            "name": "dyMysql.a1"
          },
          {
            "displayName": "b",
            "name": "dyMysql.b"
          },
          {
            "displayName": "b1",
            "name": "dyMysql.b1"
          },
          {
            "displayName": "c",
            "name": "dyMysql.c"
          },
          {
            "displayName": "c1",
            "name": "dyMysql.c1"
          },
          {
            "displayName": "d",
            "name": "dyMysql.d"
          },
          {
            "displayName": "d1",
            "name": "dyMysql.d1"
          },
          {
            "displayName": "type1",
            "name": "dyMysql.type1"
          },
          {
            "displayName": "date",
            "name": "dyMysql.date"
          },
          {
            "displayName": "score",
            "name": "dyMysql.score"
          },
          {
            "displayName": "age",
            "name": "dyMysql.age"
          },
          {
            "displayName": "address",
            "name": "dyMysql.address"
          },
          {
            "displayName": "birthday",
            "name": "dyMysql.birthday"
          },
          {
            "displayName": "create",
            "name": "dyMysql.create"
          },
          {
            "displayName": "age2",
            "name": "dyMysql.age2"
          },
          {
            "displayName": "context",
            "name": "dyMysql.context"
          },
          {
            "displayName": "dyMysql",
            "name": "dyMysql",
            "display": false,
            "custom": true
          },
          {
            "displayName": "service_name",
            "name": "dyOracle.service_name"
          },
          {
            "displayName": "port",
            "name": "dyOracle.port"
          },
          {
            "displayName": "a",
            "name": "dyOracle.a"
          },
          {
            "displayName": "a1",
            "name": "dyOracle.a1"
          },
          {
            "displayName": "b",
            "name": "dyOracle.b"
          },
          {
            "displayName": "b1",
            "name": "dyOracle.b1"
          },
          {
            "displayName": "c",
            "name": "dyOracle.c"
          },
          {
            "displayName": "c1",
            "name": "dyOracle.c1"
          },
          {
            "displayName": "d",
            "name": "dyOracle.d"
          },
          {
            "displayName": "d1",
            "name": "dyOracle.d1"
          },
          {
            "displayName": "type1",
            "name": "dyOracle.type1"
          },
          {
            "displayName": "date",
            "name": "dyOracle.date"
          },
          {
            "displayName": "dyOracle",
            "name": "dyOracle",
            "display": false,
            "custom": true
          },
          {
            "displayName": "many2one",
            "name": "many2one"
          },
          {
            "displayName": "文件",
            "name": "fileName"
          }
        ],
        "tabs": [
          {
            "header": "一对多",
            "rowspan": 3,
            "tbar": [
              {
                "name": "创建",
                "action": "createEr",
                "auth": "update"
              },
              {
                "name": "删除",
                "action": "deleteEr",
                "auth": "delete"
              }
            ],
            "body": {
              "type": "ono2many_form,ono2many_grid,ono2many_search",
              "field": "ono2ManyList",
              "columns": [
                "a",
                "c",
                "d"
              ]
            }
          },
          {
            "header": "多对多",
            "rowspan": 3,
            "tbar": [
              {
                "name": "添加",
                "action": "addEr",
                "auth": "update"
              },
              {
                "name": "删除",
                "action": "deleteEr",
                "auth": "delete"
              }
            ],
            "body": {
              "type": "many2many_form,many2many_grid,many2many_search",
              "field": "many2ManyList",
              "columns": [
                "a",
                "c",
                "d"
              ]
            }
          }
        ],
        "type": "form"
      },
      "mode": "primary",
      "model": "DYDataSource",
      "name": "数据源-表单",
      "type": "form"
    },
    "dydatasource_search": {
      "body": {
        "columns": [
          {
            "displayName": "name",
            "name": "name"
          },
          {
            "displayName": "type",
            "name": "type",
            "dynamicGroup": {
              "options": [
                {
                  "label": "mysql",
                  "value": "0",
                  "relatedProperty": "dyMysql"
                },
                {
                  "label": "oracle",
                  "value": "1",
                  "relatedProperty": "dyOracle"
                }
              ]
            }
          },
          {
            "displayName": "url",
            "name": "url"
          },
          {
            "displayName": "port",
            "name": "dyMysql.port"
          },
          {
            "displayName": "a",
            "name": "dyMysql.a"
          },
          {
            "displayName": "a1",
            "name": "dyMysql.a1"
          },
          {
            "displayName": "b",
            "name": "dyMysql.b"
          },
          {
            "displayName": "b1",
            "name": "dyMysql.b1"
          },
          {
            "displayName": "c",
            "name": "dyMysql.c"
          },
          {
            "displayName": "c1",
            "name": "dyMysql.c1"
          },
          {
            "displayName": "d",
            "name": "dyMysql.d"
          },
          {
            "displayName": "d1",
            "name": "dyMysql.d1"
          },
          {
            "displayName": "type1",
            "name": "dyMysql.type1"
          },
          {
            "displayName": "date",
            "name": "dyMysql.date",
            "widget": "daterange"
          },
          {
            "displayName": "score",
            "name": "dyMysql.score"
          },
          {
            "displayName": "age",
            "name": "dyMysql.age"
          },
          {
            "displayName": "address",
            "name": "dyMysql.address"
          },
          {
            "displayName": "birthday",
            "name": "dyMysql.birthday",
            "widget": "daterange"
          },
          {
            "displayName": "create",
            "name": "dyMysql.create"
          },
          {
            "displayName": "age2",
            "name": "dyMysql.age2"
          },
          {
            "displayName": "context",
            "name": "dyMysql.context"
          },
          {
            "displayName": "dyMysql",
            "name": "dyMysql",
            "display": false,
            "custom": true
          },
          {
            "displayName": "service_name",
            "name": "dyOracle.service_name"
          },
          {
            "displayName": "port",
            "name": "dyOracle.port"
          },
          {
            "displayName": "a",
            "name": "dyOracle.a"
          },
          {
            "displayName": "a1",
            "name": "dyOracle.a1"
          },
          {
            "displayName": "b",
            "name": "dyOracle.b"
          },
          {
            "displayName": "b1",
            "name": "dyOracle.b1"
          },
          {
            "displayName": "c",
            "name": "dyOracle.c"
          },
          {
            "displayName": "c1",
            "name": "dyOracle.c1"
          },
          {
            "displayName": "d",
            "name": "dyOracle.d",
            "widget": "daterange"
          },
          {
            "displayName": "d1",
            "name": "dyOracle.d1"
          },
          {
            "displayName": "type1",
            "name": "dyOracle.type1"
          },
          {
            "displayName": "date",
            "name": "dyOracle.date",
            "widget": "daterange"
          },
          {
            "displayName": "dyOracle",
            "name": "dyOracle",
            "display": false,
            "custom": true
          }
        ],
        "type": "search"
      },
      "mode": "primary",
      "model": "DYDataSource",
      "name": "数据源-搜索",
      "type": "search"
    },
    "dydatasource_grid": {
      "body": {
        "buttons": [
          {
            "action": "preview",
            "auth": "read",
            "name": "详情"
          },
          {
            "action": "edit",
            "auth": "update",
            "name": "编辑"
          }
        ],
        "columns": [
          {
            "displayName": "name",
            "name": "name"
          },
          {
            "displayName": "type",
            "name": "type",
            "dynamicGroup": {
              "options": [
                {
                  "label": "mysql",
                  "value": "0",
                  "relatedProperty": "dyMysql"
                },
                {
                  "label": "oracle",
                  "value": "1",
                  "relatedProperty": "dyOracle"
                }
              ]
            }
          },
          {
            "displayName": "url",
            "name": "url"
          },
          {
            "displayName": "port",
            "name": "port"
          },
          {
            "displayName": "a",
            "name": "a"
          },
          {
            "displayName": "a1",
            "name": "a1"
          },
          {
            "displayName": "b",
            "name": "b"
          },
          {
            "displayName": "b1",
            "name": "b1"
          },
          {
            "displayName": "c",
            "name": "c"
          },
          {
            "displayName": "c1",
            "name": "c1"
          },
          {
            "displayName": "d",
            "name": "d"
          },
          {
            "displayName": "d1",
            "name": "d1"
          },
          {
            "displayName": "type1",
            "name": "type1"
          },
          {
            "displayName": "date",
            "name": "date"
          },
          {
            "displayName": "score",
            "name": "score"
          },
          {
            "displayName": "age",
            "name": "age"
          },
          {
            "displayName": "address",
            "name": "address"
          },
          {
            "displayName": "birthday",
            "name": "birthday"
          },
          {
            "displayName": "create",
            "name": "create"
          },
          {
            "displayName": "age2",
            "name": "age2"
          },
          {
            "displayName": "context",
            "name": "context"
          },
          {
            "displayName": "dyMysql",
            "name": "dyMysql",
            "custom": true,
            "hidden": true
          },
          {
            "displayName": "service_name",
            "name": "service_name"
          },
          {
            "displayName": "dyOracle",
            "name": "dyOracle",
            "custom": true,
            "hidden": true
          }
        ],
        "tbar": [
          {
            "action": "create",
            "auth": "create",
            "name": "新增"
          },
          {
            "action": "delete",
            "auth": "delete",
            "name": "删除"
          }
        ],
        "type": "grid"
      },
      "mode": "primary",
      "model": "DYDataSource",
      "name": "数据源-表格",
      "type": "grid"
    }
  }
}