この記事で説明したように、3つのオプションがあります。
@Transient
メソッドを使用して属性を計算している
@PostLoad
エンティティリスナーを使用することもできます
- または、Hibernate固有の
@Formula
アノテーションを使用できます
HibernateではJPAで@Formulaを使用できますが、@ PostLoadコールバックを使用して、いくつかの計算結果を一時的なプロパティに設定できます。
@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;
}
より複雑なクエリの場合は@Formula
、この記事で説明されているようにHibernateを使用できます。
@Formula(
"round(" +
" (interestRate::numeric / 100) * " +
" cents * " +
" date_part('month', age(now(), createdOn)" +
") " +
"/ 12) " +
"/ 100::numeric")
private double interestDollars;