JPA во время сохранения Entity?
С БД приходит дополнительная колонка (level) которой нет в самой таблице, она формируется путем Рекурсивного запроса. Если я добавляю поле level в Entity, при добавлении или изменении строки в БД выходит ошибка что такой колонки в Таблице не существует. Аннотация @Transient частично решает эту проблему, поле level игнорируется в запросе, но при этом при получении данных с базы поле level всегда приходит = null, а без Аннотация @Transient я получаю значение поля level, но сохранить или изменить данные не могу. Есть ли способ получать данные вычисляемой БД колонки и при этом иметь возможность изменять и добавлять данные в БД ?
Entity(name = "dict_category")
data class DictCategoryEntity (
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
val id: Long?,
@Column(name = "parent_id")
val parent: Long?,
val level: Long?,
@Column(name = "code", unique = true)
val code: String?,
@Column(name = "name_ru", length = 5000)
val name_ru: String?,
@Column(name = "name_kz", length = 5000)
val name_kz: String?,
@Column(name = "name_en", length = 5000)
val name_en: String?,
@Column(name = "description", length = 5000)
val description: String?,
@Column(name = "icon", length = 5000)
val icon: String?,
@Column(name = "create_date")
@CreationTimestamp
var createDate: Date?,
@Column(name = "update_date")
@UpdateTimestamp
var updateDate: Date?
)
Ответы (1 шт):
Для вычисляемого поля используйте аннотацию @Formula:
@Formula("level")
private Long level;