如何将 Iterable<T> 映射到它的 DTO?
How to map Iterable<T> to its DTO?
我有以下存储库:
PermissionRepository:
public interface PermissionRepository extends CrudRepository<Permission, Long>,
SearchRepository<Permission> {
}
在我的服务中,我试图将 Permission
实体映射到 PermissionDTO
,但是作为 findAll()
方法 returns Iterable<T>
(Iterable<T> findAll();
), 我不能像下面显示的那样转换,因为我通常使用 List<T>
。它为 .stream()
方法抛出“无法解析 'Iterable' 中的方法 'stream'”错误。
List<PermissionDTO> list = permissionRepository.findAll()
.stream()
.map(PermissionDTO::new)
.collect(Collectors.toList());
那么,我怎样才能将这个 Permission
实体映射到 PermissionDTO
?
有 3 种方法可以满足您的需求
覆盖 findAll
并使其 return 成为 List
public interface PermissionRepository extends CrudRepository<Permission, Long> {
@Override
List<Permission> findAll();
}
实施 JpaRepository
而不是 CrudRepository
。
public interface PermissionRepository extends JpaRepository<Permission, Long>,
SearchRepository<Permission>
使用 StreamSupport
.
将 Iterable
转换为 Stream
StreamSupport.stream(iterable.spliterator(), false).map(PermissionDTO::new)
.collect(Collectors.toList());
我有以下存储库:
PermissionRepository:
public interface PermissionRepository extends CrudRepository<Permission, Long>,
SearchRepository<Permission> {
}
在我的服务中,我试图将 Permission
实体映射到 PermissionDTO
,但是作为 findAll()
方法 returns Iterable<T>
(Iterable<T> findAll();
), 我不能像下面显示的那样转换,因为我通常使用 List<T>
。它为 .stream()
方法抛出“无法解析 'Iterable' 中的方法 'stream'”错误。
List<PermissionDTO> list = permissionRepository.findAll()
.stream()
.map(PermissionDTO::new)
.collect(Collectors.toList());
那么,我怎样才能将这个 Permission
实体映射到 PermissionDTO
?
有 3 种方法可以满足您的需求
覆盖 findAll
并使其 return 成为 List
public interface PermissionRepository extends CrudRepository<Permission, Long> {
@Override
List<Permission> findAll();
}
实施 JpaRepository
而不是 CrudRepository
。
public interface PermissionRepository extends JpaRepository<Permission, Long>,
SearchRepository<Permission>
使用 StreamSupport
.
Iterable
转换为 Stream
StreamSupport.stream(iterable.spliterator(), false).map(PermissionDTO::new)
.collect(Collectors.toList());