我有以下存储库:
权限存储库:
public interface PermissionRepository extends CrudRepository<Permission, Long>,
SearchRepository<Permission> {
}
在我的服务中,我尝试将
Permission
实体映射到 PermissionDTO
,但由于 findAll()
方法返回 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
并使其返回 List
public interface PermissionRepository extends CrudRepository<Permission, Long> {
@Override
List<Permission> findAll();
}
实施
JpaRepository
而不是 CrudRepository
。
public interface PermissionRepository extends JpaRepository<Permission, Long>,
SearchRepository<Permission>
使用
Iterable
将 Stream
转换为 StreamSupport
。
StreamSupport.stream(iterable.spliterator(), false).map(PermissionDTO::new)
.collect(Collectors.toList());