Troubleshooting: 무엇이 문제였는가?/본캠프 6주 차: 플러스 프로젝트 3

10단계: "세상에, 'HttpMessageNotWritableException'이라니! 순환 참조에 걸린 사람? 저요!" (수정 중)

[문제]가게(Store), 카테고리(Category), 중간 테이블(Store Category)이 연관관계를 잘 맺었고 가게가 잘 생성되는지 확인했는데, 이상하게 입력된 카테고리가 데이터베이스(database)에만 저장되고 반환되지 않았다. 카테고리 목록을 제외한 여는 시간이나 주문 최소 금액 같은 다른 값은 모두 제대로 반환되었기 때문에, 혹시 응답 시 쓰는 DTO(Data Transfer Object)에 카테고리 목록이 들어가지 않았을지 모른다고 추측했다. [원인 및 문제 해결 과정]더보기package com.example.outsourcingproject.store.service;import com.example.outsourcingproject.auth.repository.OwnerAuthRepo..

10단계: Cannot invoke "Object.getClass()" because "constant" is null

[문제]QueryDSL을 사용해서 조회할 때 특정 검색어가 없으면 일정 목록이 전부 조회되어야 하는데 이상하게 '403 Forbidden' 오류 메시지가 떴다. 메시지야 직접 설정하지 않았으니 그렇다 쳐도, 어디선가 문제가 생겼다는 뜻이라 눈을 동그랗게 뜨고 원인을 찾았다. [원인]private long countByTitle(String search) { return Optional.ofNullable( jpaQueryFactory.select(Wildcard.count) .from(todo) .where(todo.title.contains(search)) .fetchOne() ) ..

10단계: Null이 아니라 널 보고 싶어요, 이메일 씨

[문제]스프링 시큐리티(Spring Security)를 적용한 뒤 일정을 생성할 때마다 email 값이 null로 나왔다. 데이터베이스(database)에는 잘 저장되어 이후에 일정을 조회할 때는 email 값이 잘 나왔기 때문에 이메일 값이 들어가는 AuthUserDto를 확인했다. 그 결과 email 값이 null이 되었다는 점을 확인했고, 'AuthUserDto를 생성하는 부분에서 이메일 값을 빠뜨렸나?' 추측했다. [원인]우선 'new AuthUserDto'로 새로운 AuthUserDto를 생성하는 AuthUserArgumentResolver에서 로그를 찍었다. 그 결과 SpringContext에 인증 정보를 설정할 때, 또는 그 전에 인증 객체를 생성할 때부터 email 값이 빠졌다고 추측할 수..