我尝试使用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自动实现。