코딩 자율학습단/학습 일지

[DAY 5] 게시판 CRUD : Read

young604 2024. 8. 2. 14:13
728x90

5.1 데이터 조회 과정

1. 사용자가 데이터 조회 요청을 웹페이지에서 url 요청을 보냄

2. 서버의 컨트롤러가 요청하는 데이터 정보를 리파지터리에 전달

3. 리파지터리에서 DB에 데이터 조회 요청

4. DB에서 해당 데이터를 찾아 엔티티로 반환

5. 모델을 통하여 엔티티가 뷰 템플릿으로 전환

6. 뷰 페이지가 사용자 화면에 출력됨

 

* 기본 생성자(매개변수가 아무것도 없는 생성자) 롬복 어노테이션 : @NoArgsConstructor

 

Trouble Shooting

문제 상황

java: incompatible types: java.lang.Long cannot be converted to java.lang.String

데이터 조회하는 show() 메서드에서 형변환 에러 발생함

해결 방안 (~ing)

일단 아무리 뒤져봐도 모르겠어서 string 타입으로 캐스팅 시켜뒀는데 id값이 string이라니,,, 말이 안된다.

스노우볼이 될 것 같아서 질문 게시판에도 글 남기긴 했다. 뒷챕터들 진행하다보면 나오려나...


+ 240805 추가

해결

질문 게시판에 멘토님께서 찾아주셨다!

왜 컨트롤러 엔티티만 뒤져보고 레파지토리를 안 봤지... 너무 단순하게 id 선언은 엔티티 안에서 했으므로 이 2가지만 봐서 못찾았던 것 같다.

 

// CrudRepository info
org. springframework. data. repository
@NoRepositoryBean 
public interface CrudRepository<T, ID>
extends org. springframework. data. repository. Repository<T, ID>

ID 값을 주는 부분에 String을 줬으니 당연히 형변환 에러가 난다... CrudRepository는 엔티티를 생성, 조회, 삭제하는 인터페이스이기 때문에 관리 대상 엔티티의 대푯값 타입을 적는다. Article의 대푯값은 id이므로 id의 대푯값을 long으로 주어야 한다.

728x90