我正在使用Java StreamSupport来传输来自服务层中@Transactional方法内部的存储库方法的Iterable返回。
SVC:
@Transactional(readOnly = true)
public Map<String, Map<String, Object>> getAllProjects() {
return StreamSupport.stream(projectRepo.findAllByOrderByNameAsc().spliterator(), true)
.collect(
LinkedHashMap::new,
(map, projectItem) -> map.put(projectItem.getName(), populateProjectItem(projectItem)),
(map, projectMap) -> map.putAll(projectMap)
);
}
private Map<String, Object> populateProjectItem(final Project project) {
return ImmutableMap.of(
"id", project.getId(),
"name", project.getName(),
"taskList", project.getTaskList().stream()
.map(taskItem -> ImmutableMap.of(
"id", taskItem.getId()
)
.collect(Collectors.toList())
);
}
我不确定我做错了什么,但它在测试用例中给了我关于Task Id的nullpointer。 project.getTaskList()
加载了延迟获取。
我错过了什么吗?