전체 일정 목록을 조회하는 API를 만들어 POSTMAN으로 테스트하는 과정에서 에러가 발생했다.


schedule_id컬럼을 조회할 수 없기 때문에 발생되는 오류로 판명되었다.

컬럼명을 카멜케이스로 사용중이어서 찾지 못 하는 것 같았다.
그래서 데이터베이스 테이블을 모두 삭제하고 스네이크케이스로 변경하여 다시 생성하였다.


정상 출력되는 모습
일정을 수정하는 기능을 만든 뒤 확인해보니 수정이 아닌 새로운 일정을 생성하고 있었다. 이는 save()메서드를 사용했기 때문이었고, 제목과 내용을 수정할 수 있는 세터를 만들어서 해결했다.
그러나 이후 POSTMAN에서는 정상적으로 출력되나, 데이터베이스에 반영이 되지 않는 문제가 발생했다.


확인해보니 이는 서비스 레이어에서 @Transactional을 사용하지 않아, 변경 감지를 하지 못 해 생긴 문제였고, @Transactional을 선언하여 문제를 해결했다.


정상적으로 데이터베이스에 반영되는 모습이다.
일정 수정 기능에 사용자의 비밀번호를 입력받아 같은 비밀번호인지 검증한 후 일정을 수정할 수 있도록 구조 변경 중 NullPointerException이 발생했다.
에러 문구를 읽어보니 참조중인 getUserEntity의 값이 null로 들어가는것으로 확인되었다.
이후 디버깅모드로 값을 한줄 씩 확인해봤고 문제 지점은 내가 예상한 부분이 아닌 다른 부분에 있었다.
유저 식별자를 함꼐 출력하기 위해 scheduleResponseDto 의 구조를 변경했었는데, 이 때 유저 식별자를 불러오면서, 객체에 유저를 매핑해주지 않아서 NullPointerException이 발생되는 것이었다.

여기서 scheduleResponseDto객체를 만드는 과정에서 scheduleEntity.getUserEntity().getUserId()를 사용했는데,
ScheduleEntity scheduleEntity = new ScheduleEntity(title, schedule);
이 부분에서 객체를 새로 생성하여 유저 객체와의 매핑이 이루어지지 않은 것이었다.
따라서 객체를 생성하는 부분을 없앤 후 scheduleEntity.get이 들어가는 모든 부분을 findSchedule.get으로 변경하였다.
