Spring -Data JPA CrudRepository возвращает Iterable, нормально ли это показывать в List?
Я пишу инструмент кода-гене для генерации кода подключения для Spring -boot приложений с использованием Spring -Data-Jpa, и это слегка раздражает меня тем, что методы в CrudRepository возвращают Iterable, а не List, как iterable не обеспечивает достаточно функциональности, но List делает, поэтому я ищу лучший способ преобразования iterable в список.
Я видел этот пост об изменении итерации в коллекцию, и мне было интересно, а не использовать библиотеку типа Guava или реализовать мою собственную функцию для преобразования, почему бы просто не перечислить его в список? Что-то не так с этим, о чем я не знаю?
Изменить:
Я прошу, потому что, поскольку это инструмент кода-кода, не разумно заставить его генерировать код, который вводит зависимости от сторонних библиотек, а также писать мою собственную функцию для преобразования тоже не очень разумно, потому что ей придется где-то жить, а я скорее всего, не имеет этого в сгенерированном коде. Простое приведение будет работать, если немного уродливое, но просто интересно, есть ли что-то, что мне не хватает?
Ответы
Ответ 1
Нет, я не думаю, что все в порядке.
Пока List
гарантированно будет Iterable
, а Iterable
может быть не List
. Это означает, что если вы нажмете Iterable
на List
, он может выйти из строя во время выполнения. Даже если он работает, нет гарантии, что он будет продолжать работать в будущем, поскольку он может измениться в новых версиях Spring Data JPA, не нарушая контракт интерфейса.
Вместо использования броска вы должны объявить свои собственные методы запросов, которые возвращают List
.
Ответ 2
Вы упомянули [spring-data-jpa]
, поэтому я предполагаю, что вы используете JPA. В этом случае используйте JpaRepository
вместо CrudRepository
, где методы возвращают List
, как вы этого хотите.