Я пытаюсь сохранить объект, содержащий встроенный объект, используя Spring Data JDBC.И он не сохраняется, потому что он не проходит нулевую проверку.
Я создал внешний класс для сохранения.
data class Outer(
@Id
val id: Long,
val value: String,
@Embedded
inner: Inner? = null
)
data class Inner(
val innerValue1: String,
val innerValue2: String
)
В БД я хотел бы иметь толькоодна таблица для Outer
, которая содержит поля id
, value
, inner_value_1
и inner_value_2
.Вот почему я ставлю аннотацию @Embedded
в поле inner
.
id
и value
должны быть обязательными полями.innver_value_1
и invver_value_2
могут быть нулевыми,
Проблема возникает, когда я пытаюсь сохранить нулевой внутренний объект (который можно обнулять как в Kotlin, так и в БД).
val outer = Outer(15, "value")
repo.save(outer) //throws an exception
Операция сохранения в репо генерирует исключение, причина которого ожидает, что внутреннее не будет нулевым:
Caused by: java.lang.IllegalArgumentException: Target bean must not be null!
at org.springframework.util.Assert.notNull(Assert.java:198)
at org.springframework.data.mapping.model.BasicPersistentEntity.verifyBeanType(BasicPersistentEntity.java:550)
at org.springframework.data.mapping.model.BasicPersistentEntity.getPropertyAccessor(BasicPersistentEntity.java:453)
Сложность состоит в том, что в Kotlin я не могу передать объект с полями с нулевым значением (потому что они не обнуляются),
Есть ли способ сохранить пустой / нулевой внедренный объект?