Spring-Data JPA CrudRepository returns Iterable, is it OK to cast this to List?
我正在编写一个代码生成工具来使用Spring Data JPA为Spring引导应用程序生成后端接线代码,而Cruderpositive中的方法返回iterable而不是lis t(因为iterable没有提供足够的功能),这让我有点恼火,但list提供了足够的功能,因此我正在寻找将iterable转换为lis的最佳方法。T
我看到这篇关于将iterable改为collection的文章,我想知道,与其使用像guava这样的库或者实现我自己的函数来进行转换,为什么不直接将它转换为list呢?这样做有什么我不知道的地方吗?
编辑:我这样问是因为它是一个代码生成工具,不合理的做法是让它生成引入对第三方库依赖性的代码,并编写自己的函数来进行转换,这也不是真正合理的,因为它必须生活在某个地方,而我宁愿不在生成的代码中使用它。一个简单的演员会有用,如果有点难看,但只是想知道是否有什么东西我错过了?
你提到过
不,我觉得不好。
当
您应该声明自己的查询方法,而不是使用强制转换返回
您的接口仍然可以扩展cruderpositive,您只需添加一个新方法findall返回一个列表。比如下面的例子:
1 2 3 4 5 6 7 | @Repository public interface DataRepository extends CrudRepository<Data, Long> { @Override List<Data> findAll(); } |
如果您有一个"抽象"存储库要由所有存储库扩展,那么您也可以添加这个方法,这样它将对所有存储库都有影响。比如下面的例子:
1 2 3 4 5 6 7 | @NoRepositoryBean public interface GenericRepository<T> extends CrudRepository<T, Long> { @Override List<T> findAll(); } |