EclipseLink - 在运行时定义 FetchType

Posted

技术标签:

【中文标题】EclipseLink - 在运行时定义 FetchType【英文标题】:EclipseLink - defining FetchType in the runtime 【发布时间】:2016-03-04 09:48:27 【问题描述】:

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

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


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

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

谢谢,干杯

【问题讨论】:

【参考方案1】:

您通常不会将某些内容定义为默认为“eager”,然后在运行时指定lazy,因为lazy 需要预先编织特殊支持,而这不适用于eager 关系。大多数人会将其定义为惰性,然后在需要在单个查询中急切获取时使用eclipselink.join-fetch 查询提示。

您也可以尝试fetchGroups,这允许定义fetchGroup 来指定要加载的属性。我不确定它是否会覆盖急切的关系,它可能值得尝试,并且它可用于使您想要更容易获取某些惰性关系的相反情况。

【讨论】:

以上是关于EclipseLink - 在运行时定义 FetchType的主要内容,如果未能解决你的问题,请参考以下文章

eclipselink 连接池

Eclipselink 2.5 使用 Maven 生成元模型

如何在 EclipseLink 中引用自定义的“ConnectionProvider”?

JPA/EclipseLink - 计算列

EclipseLink 拒绝将 PostgreSQL 上的本机查询映射到实体

JPA + EclipseLink + SAP云平台 = 运行在云端的数据库应用