목록 보기
하이버네이트의 시간은 거꾸로 간다
백엔드

하이버네이트의 시간은 거꾸로 간다

마켓컬리
마켓컬리
2024년 10월 16일

두줄요약

스프링부트 업그레이드 후 하이버네이트의 시간 변환 로직 변화로 LocalTime 조회 오류가 발생했습니다. 임시로 Converter를 적용해 나노초를 제거하며 장애를 우회했습니다.

문제 상황

  • 스프링부트 3.x 업그레이드 후 운영 배포 다음 날, LocalTime 조회 시 DateTimeException 발생
  • PostgreSQL TIME 컬럼을 LocalTime으로 변환하는 과정에서 음수 나노초가 생성되는 현상

원인 분석

  • 자바 11→17 변경은 직접 원인 아님
  • 하이버네이트 5.6.5→6.5.5 변경으로 LocalTime 저장 시 나노초를 밀리초로 반영하는 방식으로 변경
  • 조회 시 TimeLocalTime으로 복원하는 과정에서 KST와 epoch 기준 차이로 음수 밀리초 계산 발생

해결 방법

  • 수정 버전 릴리즈 전까지 AttributeConverter로 저장·조회 시 나노초 제거
  • truncatedTo(ChronoUnit.SECONDS) 적용으로 문제 컬럼에 임시 대응

댓글 0

댓글을 작성하려면 로그인이 필요합니다.

댓글을 불러오는 중...