一尘不染

如何使用JPA和Hibernate映射计算的属性

java

我的Java bean具有childCount属性。此属性未映射到数据库列。取而代之的是,它应该由数据库通过COUNT()对我的Java bean及其子级的联接进行操作的函数来计算。如果可以按需/“懒惰地”计算此属性,那就更好了,但这不是强制性的。

在最坏的情况下,我可以使用HQL或Criteria API设置此bean的属性,但我不希望这样做。

Hibernate @Formula批注可能会有所帮助,但是我几乎找不到任何文档。


阅读 372

收藏
2020-03-09

共1个答案

一尘不染

JPA不提供对派生属性的任何支持,因此你必须使用提供程序特定的扩展。正如你提到的,@Formula使用Hibernate时非常适合此操作。你可以使用一个SQL片段:

@Formula("PRICE*1.155")
private float finalPrice;

甚至是对其他表的复杂查询:

@Formula("(select min(o.creation_date) from Orders o where o.customer_id = id)")
private Date firstOrderDate;

idid当前实体的。

2020-03-09