使用 JPA 查询部分实体

2024-01-07

我有一个类似于的 JPA 实体;

public class Inventory {
 private String productname;
 private String manufacturer;
 private Float retailprice;
 private Integer unitssold;
 private String ourcomment;
}

在大约五分之二的查询中,我需要整个实体,但其余时间我都需要not有兴趣售出单位 and 我们的评论.

进行查询并获得很大的结果列表但只需要 3/5 的信息感觉像是一种浪费。我想稍微优化一下,并且我有预感这可以使用继承来完成。

But how?


遗产?不。

即使假设您有一个由列表中的前三个字段组成的实际域实体,并且Inventory如果已经扩展了它,由于隐式多态性,您对该实体进行的任何查询都将不可避免地加载所有字段(如果映射到不同的表,则通过连接)。

你可以做的是将第四个和第五个属性映射为“lazy”;您的 JPA 提供商必须使用字节码工具才能做到这一点:

@Basic(fetch = FetchType.LAZY)
private Integer unitssold;

@Basic(fetch = FetchType.LAZY)
private String ourcomment;

你必须指定fetch all properties在需要获取所有内容的查询中;其他人在第一次访问之前不会检索属性值。

老实说,只有当您的查询返回大型结果集并且“惰性”属性本身相当大时,这种方法才值得(例如,我不会这样做Integer alone; String如果可以很长的话可能是可行的)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 JPA 查询部分实体 的相关文章

随机推荐