Версия jmix 2.2.3
Сущность:
@JmixEntity
@Table(name = "JT_TEST_ENTITY")
@Entity(name = "jt_TestEntity")
open class TestEntity {
@JmixGeneratedValue
@Column(name = "ID", nullable = false)
@Id
var id: UUID? = null
@NotNull
@InstanceName
@Column(name = "NAME")
var name: String? = null
@NotNull
@Column(name = "BOOL_VAR", nullable = false)
var boolVar: Boolean? = false
@Transient
@JmixProperty
var testDto: TestDto? = null
@Transient
@JmixProperty
var testDto2: TestDto? = null
@JmixProperty
@DependsOnProperties("boolVar")
fun getTestDtoForGrid(): TestDto? {
return if (boolVar == true) {
testDto
} else {
testDto2
}
}
@PostConstruct
fun postConstruct(dataManager: DataManager) {
testDto = dataManager.create(TestDto::class.java)
testDto2 = dataManager.create(TestDto::class.java)
}
}
В проект добавлен
jmix.core.store-descriptor_elastic=test_ElasticStoreDescriptor
jmix.core.additional-stores=elastic
При сохранении новой сущности падает ошибка ConstraintViolationException
В DataContextImpl
поле boolVar
установлено:
Но в методе UnconstrainedDataManagerImpl#writeCrossDataStoreReferences
оно обнуляется:
Если убрать
jmix.core.store-descriptor_elastic=test_ElasticStoreDescriptor
jmix.core.additional-stores=elastic
или @DependsOnProperties("boolVar")
, то все сохраняется нормально.
Проект прикладываю:
jmix-test.zip (121.2 КБ)