我的Java bean具有childCount属性。此属性未映射到数据库列。取而代之的是,它应该由数据库通过COUNT()对我的Java bean及其子级的联接进行操作的函数来计算。如果可以按需/“懒惰地”计算此属性,那就更好了,但这不是强制性的。
在最坏的情况下,我可以使用HQL或Criteria API设置此bean的属性,但我不希望这样做。
Hibernate @Formula批注可能会有所帮助,但是我几乎找不到任何文档。
@Formula
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;
当id是id当前实体的。
id