문제 상황
Team 목록을 클라이언트에 넘겨 줄때, 아래와 같이 무한 참조 현상이 나타났다.
문제 원인
코드
@RequestMapping(value = "/team/findTeamList")
public ResponseEntity findTeamList(){
List<Team> allTeams = teamService.findAllTeams();
if (!allTeams.isEmpty()) {
return ResponseEntity.ok().body(allTeams);
}
return null;
}
Team은 소속 멤버에 대한 테이블인 JoinTeams를 가지고 있다.
또한, JoinTeams는 Member와 양방향 관계를 가지고 있다.
이때, Team 객체의 정보를 불러올 때,
- JoinTeams를 가져오고,
- JoinTeams 안의 Member를 가져오고,
- JoinTeams 안의 Member 안의 JoinTeams를 가져오고 ...
가 무한 참조 되는 것이다.
해결방법
클라이언트에 전달할 리스트 데이터를 새로운 리스트 DTO에 담아, 전달해준다.
@RequestMapping(value = "/team/findTeamList")
public ResponseEntity findTeamList(){
List<Team> allTeams = teamService.findAllTeams();
//새로운 dto에 담아서 전달!
List<FindTeam> list = new ArrayList<>();
if (!allTeams.isEmpty()) {
for(Team t : allTeams) {
FindTeam findTeam = FindTeam.responseFindTeam(t.getName(), t.getCreator(), t.getCreateDate());
list.add(findTeam);
}
return ResponseEntity.ok().body(list);
}
return null;
}
'활동들~ > Help Todo (개인프로젝트)' 카테고리의 다른 글
[문제 기록] NEXT.JS(SSR) Error: Text content does not match server-rendered HTML. (0) | 2023.04.02 |
---|---|
react JWT 토큰 저장, 가져오기 (0) | 2023.03.23 |
[에러] Builder 패턴 중 NullPointExepction (0) | 2023.03.21 |
[개발 기록] 백엔드 Spring Security 리팩토링 (0) | 2023.03.20 |
Help Todo 프로젝트 (0) | 2023.03.15 |