복붙노트

[SPRING] Spring-Data JPA CrudRepository가 Iterable을 반환합니다. 이것을 List로 캐스팅해도 괜찮습니까?

SPRING

Spring-Data JPA CrudRepository가 Iterable을 반환합니다. 이것을 List로 캐스팅해도 괜찮습니까?

Spring-Data-Jpa를 사용하는 Spring-boot 어플리케이션을위한 백엔드 와이어 링 코드를 생성하는 코드 -gen 툴을 작성 중입니다. CruerRepository의 메소드가 List가 아닌 Iterable을 반환한다는 것은 다소 어렵습니다. iterable은 충분히 제공하지 않습니다. 기능, 그러나 목록 않습니다, 그래서 나는 목록에 iterable 변환하는 최선의 방법을 찾고 있어요.

나는이 컬렉션을 반복 컬렉션으로 바꾸는 것을 보았고 Guava와 같은 라이브러리를 사용하거나 변환을 수행하기 위해 자체 함수를 구현하는 것보다는 왜 List로 캐스트하지 않는지 궁금합니다. 내가 알지 못하는 일에 어떤 문제가 있습니까?

편집하다: 코드 겐 (code-gen) 도구이기 때문에 제 3 자 라이브러리에 의존성을 도입하는 코드를 생성하는 것은 합리적이지 않으며 변환을 수행하기위한 자체 함수를 작성하는 것은 어딘가에서 살아야하기 때문에 실제로 합리적이지 않습니다. 오히려 생성 된 코드에서 그렇게하지 마십시오. 간단한 캐스트는 조금 추한 경우 작동하지만, 내가 누락 된 것이 있는지 궁금해할까요?

해결법

  1. ==============================

    1.아니, 괜찮은 것 같지 않아.

    아니, 괜찮은 것 같지 않아.

    List는 반복 가능하다고 보장되지만 반복 가능은 List가 아닐 수도 있습니다. 즉, Iterable을 List에 캐스트하면 런타임에 실패 할 수 있습니다. 그것이 작동하더라도, 인터페이스의 계약을 깨지 않고 Spring Data JPA의 새 버전에서 바뀔 수 있으므로 앞으로도 계속 작동 할 것이라고 보장 할 수는 없습니다.

    캐스트를 사용하는 대신 목록을 반환하는 고유 한 쿼리 메서드를 선언해야합니다.

  2. ==============================

    2.당신은 [spring-data-jpa]라고 언급 했으므로 JPA를 사용하는 것 같습니다. 이 경우 CrudRepository 대신 JpaRepository를 사용하십시오. 여기서 메소드는 원하는대로 List를 반환합니다.

    당신은 [spring-data-jpa]라고 언급 했으므로 JPA를 사용하는 것 같습니다. 이 경우 CrudRepository 대신 JpaRepository를 사용하십시오. 여기서 메소드는 원하는대로 List를 반환합니다.

  3. ==============================

    3.당신의 인터페이스는 여전히 CrudRepository를 확장 할 수 있습니다. 새로운 메소드 findAll을 추가하여 목록을 반환 할 수 있습니다. 아래 예와 같이 :

    당신의 인터페이스는 여전히 CrudRepository를 확장 할 수 있습니다. 새로운 메소드 findAll을 추가하여 목록을 반환 할 수 있습니다. 아래 예와 같이 :

    @Repository
    public interface DataRepository extends CrudRepository<Data, Long> {
    
        @Override
        List<Data> findAll();
    
    }
    

    모든 리포지토리에서 확장 할 수있는 "추상"리포지토리가있는 경우이 메서드를 추가하여 모든 리포지토리에 적용 할 수 있습니다. 아래 예와 같이 :

    @NoRepositoryBean
    public interface GenericRepository<T> extends CrudRepository<T, Long> {
    
        @Override
        List<T> findAll();
    
    }
    
  4. from https://stackoverflow.com/questions/34702252/spring-data-jpa-crudrepository-returns-iterable-is-it-ok-to-cast-this-to-list by cc-by-sa and MIT license