Подтвердить что ты не робот

Spring -Data JPA CrudRepository возвращает Iterable, нормально ли это показывать в List?

Я пишу инструмент кода-гене для генерации кода подключения для Spring -boot приложений с использованием Spring -Data-Jpa, и это слегка раздражает меня тем, что методы в CrudRepository возвращают Iterable, а не List, как iterable не обеспечивает достаточно функциональности, но List делает, поэтому я ищу лучший способ преобразования iterable в список.

Я видел этот пост об изменении итерации в коллекцию, и мне было интересно, а не использовать библиотеку типа Guava или реализовать мою собственную функцию для преобразования, почему бы просто не перечислить его в список? Что-то не так с этим, о чем я не знаю?

Изменить: Я прошу, потому что, поскольку это инструмент кода-кода, не разумно заставить его генерировать код, который вводит зависимости от сторонних библиотек, а также писать мою собственную функцию для преобразования тоже не очень разумно, потому что ей придется где-то жить, а я скорее всего, не имеет этого в сгенерированном коде. Простое приведение будет работать, если немного уродливое, но просто интересно, есть ли что-то, что мне не хватает?

4b9b3361

Ответ 1

Нет, я не думаю, что все в порядке.

Пока List гарантированно будет Iterable, а Iterable может быть не List. Это означает, что если вы нажмете Iterable на List, он может выйти из строя во время выполнения. Даже если он работает, нет гарантии, что он будет продолжать работать в будущем, поскольку он может измениться в новых версиях Spring Data JPA, не нарушая контракт интерфейса.

Вместо использования броска вы должны объявить свои собственные методы запросов, которые возвращают List.

Ответ 2

Вы упомянули [spring-data-jpa], поэтому я предполагаю, что вы используете JPA. В этом случае используйте JpaRepository вместо CrudRepository, где методы возвращают List, как вы этого хотите.