假设我有以下两个实体:
@Entity
public class Pet
{
private String name;
private Integer age;
}
@Entity
public class Person
{
@ManyToOne(fetch = FetchType.LAZY)
private Pet pet;
// and ten additional attributes
}
我经常得到具有许多属性的实体,通常也在集合中,因此一对多关系。但是大多数时候我只需要在加载父实体时显示一个属性(在我们的例子中为Person)。
因此,我们的想法是不为单个属性加载整个子实体 以节省性能。
是否可以仅使用Person
加载Pet
及其name
,而无需使用JPA或至少使用Hibernate加载其他11个属性?
修改
我找到了一些答案HERE,遗憾的是这并没有解决我的问题。
欢迎任何进一步的意见。
答案 0 :(得分:1)
您正在寻找@Basic(fetch=FetchType.LAZY) JPA字段注释。
但是,并不保证特定的持久性提供程序将遵循此JPA建议。
LAZY策略是对持久性提供程序运行时的暗示。
或者,您可以将Pet
延迟加载的内容提取到单独的实体中,并使用@OneToOne(fetch=FetchType.LAZY)
注释。