我有以下存储库:
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>
使用StreamSupport
将Iterable
转换为Stream
。
StreamSupport.stream(iterable.spliterator(), false).map(PermissionDTO::new)
.collect(Collectors.toList());