0

在某些情况下,需要仅加载实体的 ID 或实体集合的 ID(例如,在关系中)。例如,我有一个实体Parent和其中的一组孩子

class Parent { 
    private List<Child> children; 
}

所以,当我想加载孩子时,我只想在某些情况下加载 id,而不是孩子的整个状态。我进行了一项研究,并通过命名 FetchGroup 找到了一种方法,这意味着如果我想实现它,我必须为每个实体注释添加 @FetchGroup(name="id", attributes = {@FetchAttribute(name = "id") })。当然,这适用于我只想将其应用于实体的情况。对于儿童情况,还应配置LoadGroup

这里的问题是:当请求一个或多个实体时,是否有另一种专门用于加载唯一 ID 的策略?或者一种方式来表明这一点?在这里,我想避免使用 @FetchGroup 注释我想应用的所有实体,仅用于加载 ID。当然,创建像“SELECT ID FROM Parent WHERE ...”或“SELECT child.id FROM Parent INNER JOIN Parent.children WHERE ...”这样的查询也不是一个解决方案,因为应该始终定义所有关系和实体。

4

1 回答 1

2

如果您只想要一个实体,您可以在 EntityManager 上使用 getReference()。

如果是查询或关系,那么在 EclipseLink 中获取组是您唯一的选择。

于 2013-01-30T14:26:53.163 回答