findAll() 메서드
MySQL에 연결해둔 데이터를 묶음으로 가져오기 위해
아래와 같은 findAll 메서드를 사용했지만 빨간색 물결로 오류가 났습니다.
List<Article> articleEntityList = articleRepository.findAll();
발생이유
왜 오류가 나는지 찾아보니 findAll() 메서드가 반환하는
데이터 타입이 Iterable 타입인데 이걸 List 타입에 넣으려고 하니 에러가 발생한것이었습니다.
해결방법
캐스팅
이를 해결하기 위한 방법중 하나는 캐스팅을 하는것입니다.
캐스팅은 데이터 타입을 다른 데이터 타입으로 변환하는것입니다.
상위 클래스 타입을 하위 클래스 타입으로 변환하는것을 업 캐스팅,
하위 클래스 타입을 하위 클래스 타입으로 변환하는것을 다운 캐스팅이라고 합니다.
인터페이스 상하 관계
lterable > Collection > List
코드는 아래와 같이 다운캐스팅을 하여 사용할수 있습니다.
List<Article> articleEntityList = (List<Article>)articleRepository.findAll();
반대로 업캐스팅으로 문제를 해결할수도 있습니다.
Iterable<Article> articleEntityList = articleRepository.findAll();
'Back-End > Springboot' 카테고리의 다른 글
[Spring boot] war배포시 404 ERROR 해결 방법 (8) | 2024.01.08 |
---|---|
IntelliJ IDEA와 Git 연결하기 (0) | 2023.12.11 |
스프링부트 war파일 만들기 (2) | 2023.09.24 |
스프링 부트 DTO (2) | 2023.09.03 |
스프링 부트 '모델'로 템플릿 활용하기 (0) | 2023.08.29 |