
백엔드
하이버네이트의 시간은 거꾸로 간다
두줄요약
스프링부트 업그레이드 후 하이버네이트의 시간 변환 로직 변화로 LocalTime 조회 오류가 발생했습니다. 임시로 Converter를 적용해 나노초를 제거하며 장애를 우회했습니다.
문제 상황
- 스프링부트 3.x 업그레이드 후 운영 배포 다음 날, LocalTime 조회 시
DateTimeException발생 - PostgreSQL
TIME컬럼을LocalTime으로 변환하는 과정에서 음수 나노초가 생성되는 현상
원인 분석
- 자바 11→17 변경은 직접 원인 아님
- 하이버네이트 5.6.5→6.5.5 변경으로
LocalTime저장 시 나노초를 밀리초로 반영하는 방식으로 변경 - 조회 시
Time을LocalTime으로 복원하는 과정에서 KST와 epoch 기준 차이로 음수 밀리초 계산 발생
해결 방법
- 수정 버전 릴리즈 전까지
AttributeConverter로 저장·조회 시 나노초 제거 truncatedTo(ChronoUnit.SECONDS)적용으로 문제 컬럼에 임시 대응
