一尘不染

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

hibernate

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

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

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

任何帮助,不胜感激。谢谢。


阅读 239

收藏
2020-06-20

共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当前实体的。

以下博客文章值得一读:Hibernate Derived Properties-Performance and
Portability

没有更多详细信息,我无法给出更准确的答案,但是以上链接应该会有所帮助。

也可以看看:

2020-06-20