Как объясняется в этой статье , у вас есть три варианта:
- либо вы вычисляете атрибут, используя
@Transient
метод
- Вы также можете использовать
@PostLoad
слушатель сущностей
- или вы можете использовать специфичную для Hibernate аннотацию
@Formula
1013 *
Хотя Hibernate позволяет использовать @ Formula , в JPA вы можете использовать обратный вызов @ PostLoad , чтобы заполнить свойство transient результатом некоторых расчет:
@Column(name = "price")
private Double price;
@Column(name = "tax_percentage")
private Double taxes;
@Transient
private Double priceWithTaxes;
@PostLoad
private void onLoad() {
this.priceWithTaxes = price * taxes;
}
Для более сложных запросов вы можете использовать Hibernate @Formula
, как описано в этой статье :
@Formula(
"round(" +
" (interestRate::numeric / 100) * " +
" cents * " +
" date_part('month', age(now(), createdOn)" +
") " +
"/ 12) " +
"/ 100::numeric")
private double interestDollars;