在某些情况下,只需要加载实体的ID或实体集合的ID(例如,在关系中)。例如,我有实体父和儿童的集合
class Parent {
private List<Child> children;
}
所以,当我想加载孩子时,我只希望在某些情况下加载id,而不是整个孩子的状态。我做了一个研究,我通过Named FetchGroup找到了一种方法,这意味着如果我想实现这个,我必须为每个Entity注释添加@FetchGroup(name =“id”,attributes = {@FetchAttribute(name =“id”)) })。当我想将它仅用于实体的情况时,这适用于这些情况。对于孩子,还应配置 LoadGroup 。
这里的问题是:当请求一个或多个实体时,是否还有另一种专门用于加载ONID ID的策略?还是一种表明方式?在这里,我想避免使用@FetchGroup注释我想要应用的所有实体,仅用于加载ID。当然,创建一个类似“SELECT ID FROM Parent WHERE ...”或“SELECT child.id FROM Parent INNER JOIN Parent.children WHERE ...”的查询也不是解决方案,因为总是应该为所有人定义关系和实体。
答案 0 :(得分:2)
如果您只想要一个实体,可以在EntityManager上使用getReference()。
如果是查询或关系,则EclipseLink中的获取组是您唯一的选择。