我正在尝试以递归方式检索总部下的所有办公室。但是,在尝试通过第二代进行流式传输时,我收到了 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。
有什么建议吗?