在Spring数据jpa事务中流式传输Iterable

时间:2018-02-28 19:14:17

标签: spring-boot spring-data spring-data-jpa java-stream

我正在使用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()加载了延迟获取。

我错过了什么吗?

0 个答案:

没有答案