Spring递归延迟加载子实体

时间:2021-02-02 13:25:58

标签: spring jpa

我正在尝试以递归方式检索总部下的所有办公室。但是,在尝试通过第二代进行流式传输时,我收到了 NullPointerException。

public class Office extends AbstractPersistableCustom<Long>{

    @OneToMany(fetch = FetchType.LAZY)
    @JoinColumn(name = "parent_id")
    @Builder.Default
    private List<Office> children = new LinkedList<>();

    // For retrieving children recursively
    public Stream<Office> flattened() {
        return Stream.concat(
                Stream.of(this),
                children.stream().flatMap(Office::flattened));
    }

}

存储库包装器

 public Office findOfficeHierarchy(final Long id) {
        final Office office = this.repository.findById(id).orElseThrow(() -> new OfficeNotFoundException(id));
        office.loadLazyCollections();          
        return office ;
    }

在我的控制器类中

List<Office> recursive= children.stream().flatMap(Office::flattened).collect(Collectors.toList());

由于数据量大,我真的很想避免使用 FetchType.EAGER。

有什么建议吗?

0 个答案:

没有答案