部分加载属性或集合的子实体

时间:2015-04-09 05:51:32

标签: hibernate jpa lazy-loading

假设我有以下两个实体:

@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,遗憾的是这并没有解决我的问题。

欢迎任何进一步的意见。

1 个答案:

答案 0 :(得分:1)

您正在寻找@Basic(fetch=FetchType.LAZY) JPA字段注释。

但是,并不保证特定的持久性提供程序将遵循此JPA建议。

  

LAZY策略是对持久性提供程序运行时的暗示。

或者,您可以将Pet延迟加载的内容提取到单独的实体中,并使用@OneToOne(fetch=FetchType.LAZY)注释。