Java 8流在可选

时间:2017-07-06 14:58:52

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

我尝试使用Java 8流来映射List<Entity>个实体。

entities.stream()
            .map(entity -> 
                 entityService.getById(entity.getId())
                .orElseGet(Entity::new))
            .collect(Collectors.toList());

问题在于getById()会引发JpaObjectRetrievalFailureException / EntityNotFoundException

我认为,如果getById()返回可选实体,orElseGet()将获得Entity或创建新实体。

服务

Optional<Entity> getById(long id);

ServiceImpl

@Override
public Optional<Entity> getById(final long id) {
    return entityRepository.findById(id);
}

EntityRepository扩展了JpaRepository

Optional<Entity> findById(long id);

更新

findById(id)由JpaRepository自动实现。

0 个答案:

没有答案