Есть сущности
open class TableEntity {
@Composition
@OneToMany(mappedBy = "tableEntity")
var columnEntities: MutableList<ColumnEntity> = NotInstantiatedList()
@JoinColumn(name = "PRIMARY_KEY_CONSTRAINT_ID")
@OneToOne(fetch = FetchType.LAZY)
var primaryKeyConstraint: PrimaryKeyConstraint? = null
@JoinColumn(name = "WATERMARK_ID")
@OneToOne(fetch = FetchType.LAZY)
var watermark: Watermark? = null
}
open class PrimaryKeyConstraint {
@OneToOne(fetch = FetchType.LAZY, mappedBy = "primaryKeyConstraint")
var tableEntity: TableEntity? = null
@JoinTable(
name = "JT_PRIMARY_KEY_CONSTRAINT_COLUMN_LINK",
joinColumns = [JoinColumn(name = "PRIMARY_KEY_CONSTRAINT_ID")],
inverseJoinColumns = [JoinColumn(name = "COLUMN_ID")]
)
@ManyToMany
var columnEntities: MutableList<ColumnEntity> = NotInstantiatedList()
}
open class Watermark {
@JoinColumn(name = "COLUMN_ID")
@ManyToOne(fetch = FetchType.LAZY)
var columnEntity: ColumnEntity? = null
@OneToOne(fetch = FetchType.LAZY, mappedBy = "watermark")
var tableEntity: TableEntity? = null
}
Экран TableEntity:
<formLayout id="form" dataContainer="tableEntityDc">
<responsiveSteps>
<responsiveStep minWidth="0" columns="1"/>
<responsiveStep minWidth="40em" columns="2"/>
</responsiveSteps>
<textField id="nameField" property="name" colspan="2"/>
<textField id="primaryKeyConstraintName" property="primaryKeyConstraint.name"/>
<multiSelectComboBox id="primaryKeyConstraintColumns" property="primaryKeyConstraint.columnEntities"
itemsContainer="columnEntitiesDc"/>
<textField id="watermarkName" property="watermark.name"/>
<entityComboBox id="watermarkColumn" property="watermark.columnEntity"
itemsContainer="columnEntitiesDc"/>
</formLayout>
<dataGrid id="columnTable" dataContainer="columnEntitiesDc" editorBuffered="true">
<actions>
<action id="crate" type="list_create"/>
<!-- <action id="edit" type="list_edit"/>-->
</actions>
<columns>
<column property="name" editable="true"/>
<editorActionsColumn>
<editButton text="Edit" icon="PENCIL"/>
<saveButton icon="CHECK" themeNames="success"/>
<cancelButton icon="CLOSE" themeNames="error"/>
</editorActionsColumn>
</columns>
</dataGrid>
В общем юзер добавляет в таблицу колонки. И для PrimaryKeyConstraint
и Watermark
выбирает колонки из таблицы:
Если в таблице отредактировать колонку. Это не отображается на полях:
jmix 2.4.3
jmix-test.zip (2.3 МБ)