[문제]
몇몇 사용자가 이미 가입한 상황이라고 가정하고, 즉 데이터베이스에 몇몇 사용자 정보를 저장한 다음 3단계 도전 과제를 했다. 문제는 일정을 생성하는 데에는 성공했는데, memberId를 입력해도 계속 0이 나왔다. 아무래도 무언가를 빠뜨린 듯싶었다.
[원인]
package com.spring.weekthree.dto.responsedto;
import com.spring.weekthree.entity.Plan;
import lombok.AllArgsConstructor;
import lombok.Getter;
import java.time.LocalDate;
import java.time.LocalDateTime;
// 클라이언트(client)에 응답하는 response DTO 클래스(class)
@AllArgsConstructor
@Getter
public class PlanResponseDto {
// (1) 속성
private long planId;
private long memberId;
private LocalDate plannedDate;
private String title;
private String task;
private LocalDateTime createdDateTime;
private LocalDateTime updatedDateTime;
// (2) 생성자
public PlanResponseDto(Plan plan) {
this.planId = plan.getPlanId();
this.memberId = plan.getMemberId();
/*
[오답] 누락
[정답] 추가: this.memberId = plan.getMemberId();
*/
this.plannedDate = plan.getPlannedDate();
this.title = plan.getTitle();
this.task = plan.getTask();
this.createdDateTime = plan.getCreatedDateTime();
this.updatedDateTime = plan.getUpdatedDateTime();
}
// (3) 기능
}
역시나 사용자의 Id에 해당하는 memberId를 클라이언트(client)에 응답으로 전달하는 response DTO에 제대로 넣지 않은 데에 원인이 있었다. 그나마 로직(logic)을, 논리 흐름을 뜯어고칠 필요가 없어서 안도의 한숨이 나왔다.
[해결]
처음에 빠뜨린 memberId를 생성자에 추가한 다음, 다시 확인하니 0이 아니라 직접 입력한 Id가 그대로 나왔다. 혹시 몰라서 몇 번 더 시험하고 데이터베이스(database)에도 잘 저장되었는지 확인했다.
데이터베이스에 잘 저장된 정보를 확인한 후에야 마음이 놓였다. 사용자의 이름이 아니라 Id로 사용자를 구분하니, 동명이인도 구분할 수 있어서 마음에 들었다. 또한 일정의 Id와 별도로 관리하다 보니, 한 사용자가 일정을 여러 개 생성했을 때도 더 쉽게 정보를 관리할 수 있을 듯했다.
'Troubleshooting: 무엇이 문제였는가? > 본캠프 3주 차: 일정 관리 앱 만들기' 카테고리의 다른 글
3단계: "406 Not Acceptable" (0) | 2024.12.12 |
---|---|
3단계: "순환 참조 오류라니, 돌아가는 각도가 예술이군요." (0) | 2024.12.12 |
2단계: "PATCH를 두 번 눌러야 수정이 돼요. 왜 이럴까요?" (0) | 2024.12.09 |
1단계: "넌 띄어쓰기를 소중히 하지 않았어" (0) | 2024.12.09 |
1단계: "아무래도 이름(name)이란 체에 구멍이 뻥 뚫렸나 보다." (0) | 2024.12.08 |