문제 상황
현상 설명
다음과 같은 에러가 발생하였다.
이는 voteRecord라는 테이블 조회를 실패했다는 것인데
2025-12-08T07:44:08.343+09:00 DEBUG 24325 --- [live-voting] [nio-8080-exec-8] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to kr.sparta.livevoting.controller.VoteController#getVoteRecord(long)
Hibernate: select vr1_0.id,vr1_0.candidate_id,vr1_0.created_at,vr1_0.updated_at,vr1_0.user_id from vote_record vr1_0 where vr1_0.id=?
2025-12-08T07:44:08.348+09:00 DEBUG 24325 --- [live-voting] [nio-8080-exec-8] .m.m.a.ExceptionHandlerExceptionResolver : Using @ExceptionHandler kr.sparta.livevoting.exception.GlobalExceptionHandler#handleAllUncaughtException(Exception)
2025-12-08T07:44:08.348+09:00 DEBUG 24325 --- [live-voting] [nio-8080-exec-8] o.s.w.s.m.m.a.HttpEntityMethodProcessor : Using 'application/json', given [application/json] and supported [text/plain, */*, application/json, application/*+json]
2025-12-08T07:44:08.348+09:00 DEBUG 24325 --- [live-voting] [nio-8080-exec-8] o.s.w.s.m.m.a.HttpEntityMethodProcessor : Writing ["예상치 못한 오류가 발생했습니다."]
2025-12-08T07:44:08.349+09:00 DEBUG 24325 --- [live-voting] [nio-8080-exec-8] .m.m.a.ExceptionHandlerExceptionResolver : Resolved [java.lang.IllegalStateException: record not found]
2025-12-08T07:44:08.349+09:00 DEBUG 24325 --- [live-voting] [nio-8080-exec-8] o.s.web.servlet.DispatcherServlet : Completed 500 INTERNAL_SERVER_ERROR
원인 가설
이전에 작업하면서 계속 에러가 발생했던 부분이 프론트 코드의 요청 타입과 요구사항이 달라서 이를 잘못 확인하였을 수 있겠다 싶었다.
그래서 컨트롤단에서 잘못된 값이 넘어오고 잘못된 조회를 했나 싶었다.
원인 분석
원인 가설 탐구
프론트 코드를 찾고 요청값이 동일함에도 불구하고 동일한 에러가 발생하였다.
에러 코드 분석
에러 내용 그대로 기록을 조회하는 것 자체를 실패했을 수 있겠다 싶었다.
테이블이 생성되어있지 않은 것을 확인했다.

해결 과정
hibernate 설정을 먼저 확인했다.
update로 되어있었는데 update는 엔티티가 추가되어도 자동으로 테이블 생성을 못하는 것인지를 알아야했다.
원래 update는 새 엔티티에 대한 테이블을 만들도록 설계되어 있다.
그런데 특정 조건에서는 Hibernate가 테이블 생성을 생략하거나 실패해도 조용히 넘어간다.
테이블 생성 실패 조건엔 다음과 같은 것들이 있다
1) 엔티티 스캔 실패
엔티티가 @SpringBootApplication 패키지 바깥에 있음
@Entity 빠짐
클래스가 public이 아님
빌드 결과물이 반영되지 않음 (IDE 캐싱 문제)
2) 새 엔티티에 잘못된 매핑이 있어서 Hibernate가 엔티티 로딩을 실패
3) update는 FK 생성/관계 재구성을 잘하지 못한다
1번 조건들을 확인한 결과 문제는 없다.
@OneToMany(fetch = FetchType.LAZY)
@JoinColumn(name = "candidate_id")
private Candidate candidate;
이런 형태로 되어있었고 oneToMany는 필드로 list를 가지지 않았기 때문에 엔티티 로딩을 실패했다.
배운점
엔티티 설정이 잘못되어있으면 hibernate는 자동으로 테이블을 생성하지 않는다.
엔티티 설계를 좀더 학습할 수 있었다.
'트러블슈팅' 카테고리의 다른 글
| [트러블 슈팅] SK API 'MISSING_AUTHENTICATION_TOKEN' 에러 해결 (0) | 2026.04.08 |
|---|---|
| [트러블 슈팅] API 라우팅 경로 불일치로 인한 Cannot GET 에러 해결 (0) | 2026.04.08 |
| 트러블 슈팅/ 데이터 무결성 (0) | 2025.11.18 |
| 트러블 슈팅/ 퍼블릭 IP로 서버 접속하기 (0) | 2025.11.13 |
| 트러블 슈팅/ 의존성 설정 (0) | 2025.10.27 |