https://thiswooin.tistory.com/39
처음으로, 해결 못 하고 TIL을 마쳤던 어제의 오류, 아침부터 다른 방법들로 시도해보고 했는데 겨우 해결했다....
문제
Post에는 Reply가 OneToMany로 List의 형태로 담겨있다.
PostResponseDto에도 List<Reply>를 추가했다.
결과적으로, Reply가 있는 Post를 Client에 반환하면 오류가 났다.
시도한 방법
1. List를 Json으로 직접 문자열로 변경해서 보내보려 함. Jackson의 ObjectMapper / GSON / JSONObject 모두 실패
2. toString으로 바로 직접 바꿔보려함 -> String 참조값만 나온다. (오버로딩하면 되기도 하겠지만 뭔가 돌아가는 것 같아 포기)
3. List가 아닌 ArrayList로 변환해보기 -> 근본적인 문제가 해결되지 않음.
해결 방법
Entity를 직접 반환하면 안된다!
List<Reply> -> List<ReplyResponseDto>로 변환해서 전달해줌.
1. 기본적으로 List도 선언만한 멤버에 ArrayList로 생성해줬다.
2. ReplyResponseDto를 만든 뒤, 해당 생성자를 사용해 PostResponseDto 생성자를 수정했다.
3. 결과
Post 안에 Reply가 통째로 들어가고, 그 객체들은 전부 JSON형태로 변환된다.
저거 보고 울뻔함
배운 점
여러 블로그에서 뒤늦게나마 무한루프나 Entity를 직접 반환했을 때의 주의점에 대해 배웠다.
제대로 틀려서 덕분에 하나 배웠다.
'Back-End > Spring' 카테고리의 다른 글
TIL 230720 : ResponseEntity로 응답 메시지 보내기 (0) | 2023.07.24 |
---|---|
TIL 230703 : JPA Buddy라는 것이 이 세상에 있었다 (0) | 2023.07.03 |
TIL 230629 : List to JSON 객체 반환시 오류 (jackson) (0) | 2023.06.29 |
TIL 230628 : mappedBy 적응해보기 (0) | 2023.06.28 |
TIL 230626 : Bean과 Singleton (0) | 2023.06.26 |