如何将可迭代<T>映射到其 DTO?



我有以下存储库:

PermissionRepository:

public interface PermissionRepository extends CrudRepository<Permission, Long>,
SearchRepository<Permission> {
}

在我的服务中,我试图将Permission实体映射到PermissionDTO,但由于findAll()方法返回Iterable<T>(Iterable<T> findAll();),我无法像下面所示那样转换,因为我通常使用List<T>。它会抛出">Cannot resolve method 'stream' in 'Iterable'".stream()方法错误。

List<PermissionDTO> list = permissionRepository.findAll()
.stream()
.map(PermissionDTO::new)
.collect(Collectors.toList());

那么,我如何将这个Permission实体映射到PermissionDTO呢?

有三种方法来做你想做的事

覆盖findAll并使其返回List

public interface PermissionRepository extends CrudRepository<Permission, Long> {
@Override
List<Permission> findAll();
}

实现JpaRepository代替CrudRepository

public interface PermissionRepository extends JpaRepository<Permission, Long>,
SearchRepository<Permission>

使用StreamSupportIterable转换为Stream

StreamSupport.stream(iterable.spliterator(), false).map(PermissionDTO::new)
.collect(Collectors.toList());

最新更新