【问题标题】:Partly loading sub-entities that are attributes or collections部分加载作为属性或集合的子实体
【发布时间】:2015-06-14 08:40:48
【问题描述】:

假设我有以下两个实体:

@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)时显示一个属性。

所以我们的想法是不为单个属性加载整个子实体,并且 以节省性能。

是否可以仅使用 name 加载 Person 及其 Pet 而无需使用 JPA 或至少使用 Hibernate 加载其他 11 个属性?

编辑:

我找到了一些答案HERE,不幸的是这并没有解决我的问题。

欢迎任何进一步的意见。

【问题讨论】:

    标签: hibernate jpa lazy-loading


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 不幸的是,Hibernate 不支持这... :(
    • 你可以考虑我建议的第二个选项,即将你的惰性数据提取到一个单独的实体中。
    猜你喜欢
    • 1970-01-01
    • 2017-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-09
    • 1970-01-01
    • 1970-01-01
    • 2015-06-24
    相关资源
    最近更新 更多