Spring-Data JPA CrudRepository返回可迭代,可以把它扔到List吗?

我正在编写一个代码生成工具,使用Spring-Data-Jpa为Spring-boot应用程序生成后端连接代码,CrudRepository中的方法返回Iterable而不是List,这很烦人,因为可迭代没有提供足够的功能,但List确实如此,所以我正在寻找将可迭代转换为列表的最佳方法。

我看到了一篇关于将可迭代对象更改为集合的帖子,我想知道,与其使用像Guava这样的库或实现我自己的函数来进行转换,为什么不直接将其转换为List?这样做有什么我不知道的事情有什么不对吗?

编辑:我问,因为它是一个代码生成工具,所以让它生成引入第三方库依赖关系的代码是不合理的,并且编写我自己的函数来进行转换也不是很合理,因为它必须存在于某个地方,我宁愿在生成的代码中没有它。一个简单的演员阵容会起作用,如果有点丑陋,但只是想知道我是否错过了什么?


答案 1

你提到过,所以我猜你使用JPA。在这种情况下,使用 JpaRepository 而不是方法返回的位置,就像你想要的那样。[spring-data-jpa]CrudRepositoryList


答案 2

不,我认为这不行。

虽然 a 保证是 a,但可能不是 .这意味着,如果您确实将 a 强制转换为 a,则可能会在运行时失败。即使它有效,也不能保证它将来会继续工作,因为它可以在新版本的Spring Data JPA中更改而不会违反接口的合同。ListIterableIterableListIterableList

不应使用强制转换,而应声明自己的返回 的查询方法。List

或者,您可以使用进行转换。此答案还包含一些背景,为什么选择这些方法作为返回类型。Streamable.of(iterable).toList()Iterable


推荐