Rest调用不会检索存在的子类实体

时间:2019-09-19 10:11:54

标签: spring hibernate jpa

我正在使用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;

1 个答案:

答案 0 :(得分:0)

这称为延迟加载(或延迟初始化),这意味着将在要使用收集关系时将其提取。这是完全正常的行为。如果您每次都需要它,则可以将该关系的负载更改为EAGER,以便每次都将其获取。

这可以通过在需要加载的字段(此处是字段组和字段)上添加@OneToMany(fetch = FetchType.EAGER)来完成