我的Java Bean具有childCount属性。此属性 未映射到数据库列 。取而代之的是,它应该 由数据库通过COUNT()对Java bean及其子级的联接进行操作 的 函数 来 计算 。如果可以按需/“延迟”计算此属性,那就更好了,但这不是强制性的。
COUNT()
在最坏的情况下,我可以使用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
以下博客文章值得一读:Hibernate Derived Properties-Performance and Portability。
没有更多详细信息,我无法给出更准确的答案,但是以上链接应该会有所帮助。