其他分享
首页 > 其他分享> > 如何使用JPA和Hibernate映射计算的属性

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

作者:互联网

我的Java bean有一个childCount属性.此属性未映射到数据库列.相反,它应该由数据库计算,并在我的Java bean及其子代的连接上运行COUNT()函数.如果这个属性可以按需计算/“懒惰”会更好,但这不是强制性的.

在最糟糕的情况下,我可以使用HQL或Criteria API设置此bean的属性,但我不愿意.

Hibernate @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.

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

没有更多细节,我无法给出更准确的答案,但上述链接应该会有所帮助.

也可以看看:

>第5.1.22. Column and formula elements节(Hibernate核心文档)
>第2.4.3.1. Formula节(Hibernate Annotations文档)

标签:java,orm,jpa,hibernate,hibernate-mapping
来源: https://codeday.me/bug/20190915/1804972.html