一对一
一对一关系表示两个实体之间存在一对一的关联
@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"
}
}
}