我正在使用JPA存储库从数据库中检索对象列表。 如果我不以任何方式访问子类,则它们将为null。 如果我只是在日志文件中显示它们的数量,它们将不会为null。 我不确定为什么会这样。
在下面的代码中,如果我注释掉“ for循环”,policy.getFields()和policy.getFieldGroups将为null。 为什么会这样?
log.debug("Request to get all Policies");
List<Policy> policies = policyRepository.findAll();
for (Policy policy : policies) {
log.info("Policy fields group size:{}", policy.getFieldGroups().size());
log.info("Policy fields size:{}", policy.getFields().size());
}
return policies;
答案 0 :(得分:0)
这称为延迟加载(或延迟初始化),这意味着将在要使用收集关系时将其提取。这是完全正常的行为。如果您每次都需要它,则可以将该关系的负载更改为EAGER,以便每次都将其获取。
这可以通过在需要加载的字段(此处是字段组和字段)上添加@OneToMany(fetch = FetchType.EAGER)
来完成