EclipseLink - 在运行时

时间:2016-03-04 09:48:27

标签: java jpa orm eclipselink

假设我有一个与其他实体有关系的实体,其中FetchType定义为EAGER

class Entity {
     @OneToOne(fetch=FetchType.EAGER)  
     @JoinColumn(name="user_profile_id")  
     private OtherEntity otherEntity;

}

此实体在不同的服务中使用,FetchType.EAGER上的某些服务OtherEntity是我想要的,但在其他一些服务中,我很乐意将FetchType更改为FetchType.LAZY,但是在我的Entity类中,我已经在FetchType上将OtherEntity定义为“EAGER”。

所以问题是:有没有办法在运行时定义FetchType

谢谢,欢呼

1 个答案:

答案 0 :(得分:0)

您通常不会定义要默认为“渴望”的内容。然后在运行时指定延迟,因为懒惰需要特别支持才能在前期编织,这不是在热切的关系上完成的。大多数人会将其定义为惰性,然后在需要在单个查询中急切地获取时使用eclipselink.join-fetch查询提示。

您还可以尝试fetchGroups,这允许定义fetchGroup以指定要加载的属性。我不确定它是否会覆盖急切的关系,它可能值得尝试,它可以用于制作相反的情况,您希望更轻松地获取某些惰性关系。