我有一个与其他实体有OneToMany
关系的实体,例如Boat
下面的实体。实际上,实体有很多字段。
@Entity
public class Boat {
@Id
private long id;
private String name;
@OneToMany(fetch=FetchType.EAGER)
private List<Gun> guns;
public List<Gun> getGuns() {
return guns;
}
public String getName() {
return name;
}
}
对于某些搜索,我只对基本属性感兴趣,Boat
不想检索任何OneToMany
关系。一种选择是与 建立所有OneToMany
关系fetch=FetchType.LAZY
。
但是,延迟加载会产生两个问题:
OneToMany
延迟加载会围绕我不需要的关系创建一个代理。我根本不需要访问这种OneToMany
关系,我需要我能得到的每一个性能改进。- 许多其他查询需要预先获取,并且将所有
OneToMany
和ManyToOne
关系更改为延迟获取会使其他查询变得麻烦。
有没有办法在不使用延迟获取的情况下选择应该动态检索哪些关系。这可能使用标准 JPQL 吗?
我在 Glassfish 中使用 EclipseLink。
我以前调查过 EclipseLink 提取组,这可以解决我的问题。但是,我遇到了这个问题:https ://stackoverflow.com/questions/19577864/classdescriptor-returns-null-fetchgroupmanager-when-trying-to-create-an-eclipsel