在某些情况下,需要仅加载实体的 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 ...”这样的查询也不是一个解决方案,因为应该始终定义所有关系和实体。