@Subscribe("counterpartyAgreementsTable.select")
private fun onCounterpartyAgreementsTableSelect(event: Action.ActionPerformedEvent) {
val screen = screenBuilders.lookup(CounterpartyAgreement::class.java, this)
.withScreenClass(CounterpartyAgreementBrowse::class.java)
.withOpenMode(OpenMode.DIALOG)
.withSelectHandler { counterpartyAgreements ->
val counterpartyAgreement = counterpartyAgreements.iterator().next()
if (!counterpartyAgreementsDc.mutableItems.map { it.counterpartyAgreement
}.contains(counterpartyAgreement)) {
val employeeCounterpartyAgreement = metadata.create(EmployeeCounterpartyAgreement::class.java)
employeeCounterpartyAgreement.employee = editedEntity
employeeCounterpartyAgreement.counterpartyAgreement = counterpartyAgreement
dataContext.merge(employeeCounterpartyAgreement)
counterpartyAgreementsDc.mutableItems.add(employeeCounterpartyAgreement)
} else {
notifications
.create(Notifications.NotificationType.WARNING)
.withCaption("")
.show()
}
}
.build()
screen.counterpartyParameter = editedEntity.counterparty!!
screen.show()
}
По всей видимости при создания объекта employeeCounterpartyAgreement появляется вот такая ошибка
IllegalStateException: Cannot get unfetched attribute [name] from detached object com.example.entity.type_agreement.TypeAgreement-bd336970-8b0c-20ff-8f96-78a3497d4e09 [detached].
Класс EmployeeCounterpartyAgreement
@JmixEntity
@Table(name = "EMPLOYEE_COUNTERPARTY_AGREEMENT")
])
@Entity
open class EmployeeCounterpartyAgreement {
@JmixGeneratedValue
@Column(name = "ID", nullable = false)
@Id
var id: UUID? = null
@Column(name = "VERSION", nullable = false)
@Version
var version: Int? = null
@OnDeleteInverse(DeletePolicy.CASCADE)
@JoinColumn(name = "EMPLOYEE_ID", nullable = false)
@NotNull
@ManyToOne(fetch = FetchType.LAZY, optional = false)
var employee: Employee? = null
@OnDeleteInverse(DeletePolicy.CASCADE)
@JoinColumn(name = "COUNTERPARTY_AGREEMENT_ID", nullable = false)
@NotNull
@ManyToOne(fetch = FetchType.LAZY, optional = false)
var counterpartyAgreement: CounterpartyAgreement? = null
}
В классе CounterpartyAgreement есть поле typeAgreement: TypeAgreement
@JmixEntity
@Table(name = "TYPE_AGREEMENT")
@Entity
open class TypeAgreement {
@JmixGeneratedValue
@Column(name = "ID", nullable = false)
@Id
var id: UUID? = null
@Column(name = "VERSION", nullable = false)
@Version
var version: Int? = null
@InstanceName
@Column(name = "NAME", nullable = false)
@NotNull
var name: String? = null
}