У меня есть объект-сущность с type
значение null
(оно не равно нулю в дБ). Когда я вызываю Hibernate.unproxy
на объекте сущности - и смотрю на объект с повышенным содержанием type
- он не равен нулю. Эта сущность унаследована от другой сущности (я упоминаю об этом, потому что я не видел такого поведения с не унаследованными сущностями).
Вот код сущностей сущностей:
open class HealthValue {
@get:Id
open var id: UUID? = null
@get:ManyToOne(fetch = FetchType.LAZY)
open var healthValueType: HealthValueType? = null
}
class ObservedHealthValue : HealthValue() {
}
open class HealthValueType {
@get:Id
open var id: UUID? = null
@get:Enumerated(EnumType.STRING)
@get:Column(nullable = false)
var type: ObservationType? = null
}
class SelectionValueType : HealthValueType() {
}
Вот фрагмент сДемонстрация ошибки:
@Transactional
fun method(id: UUID) {
val healthValue= entityManager.find(ObservedHealthValue::class.java, id)
val type1 = healthValue.healthValueType!!.type // this value is null
val type2 = Hibernate.unproxy(healthValue.healthValueType!!).type // this is not null
}
Это поведение выглядит странно, не уверен, что использование Hibernate.unproxy
является правильным подходом. Есть ли у вас какие-либо идеи, почему это происходит, как это можно исправить?
Моя версия гибернации: 5.3.7.Final (это происходит из зависимости от gradle compile("org.springframework.boot:spring-boot-starter-data-jpa")
с включенным плагином 'org.springframework.boot' version '2.2.0.RELEASE'
)