@Wan-Derer

Hibernate, как инициализировать вычисляемое поле в Entity?

Всем привет!
Имею класс @Entity. Поля в нём заполняются из БД средствами Hibernate.
Хочу добавить в этот класс поле, которого нет в базе и которое вычисляется на основе других полей. Соответственно, мне надо чтобы все поля были подняты из базы до того как я начну вычислять моё значение. Как это сделать? Может есть какая аннотация на сей счёт али какая иная техника?

ЗЫ: пока придумал только сделать обёртку над классом @Entity, в которой буду получать объект и устанавливать поле (или поле сделать в самой обёртке). Но что-то этот путь мне не очень нра...
  • Вопрос задан
  • 65 просмотров
Решения вопроса 1
azerphoenix
@azerphoenix Куратор тега Java
Java Software Engineer
Добрый день!
Хочу добавить в этот класс поле, которого нет в базе

Подозреваю, что вам нужно сделать следующее:
1) создать поле с аннотацией @Transient
Например,
@Transient
private long calc;

https://stackoverflow.com/questions/2154622/why-do...
Таким образом это поле не будет хранится в БД.

...которое вычисляется на основе других полей.

2) К этому полю добавить аннотацию @Formula
https://thorben-janssen.com/hibernate-tips-calcula...

Прочитайте вот, эту статью - https://vladmihalcea.com/how-to-map-calculated-pro...

Другой вариант выполнить пункт 1. Но вместо использования аннотации @Formula создать метод с аннотацией @PostConstruct и затем уже инициализировать ваше поле с нужным значением
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы