먼저 LocalDateTime 에서 ZonedDateTIme 으로 변경하게된 합당한 이유는 링크의 내용으로 대체합니다.

날짜와 시간 ZonedDateTime

이 글은 Spring boot 2.7.9 버전에서 spring-data-jpa 의 @Entity 애너테이션이 붙은 엔티티 클래스에서 LocalDateTime 타입의 필드를 ZonedDateTIme 타입으로 변경하면서 겪은 문제와 해결 방법에 대해 기술합니다.

먼저 LocalDateTime 타입을 사용하는 클래스 중, ZonedDateTime 타입으로 변경을 진행하고 기존의 테스트를 돌려본 결과 다음과 같은 예외가 대부분의 테스트에서 발생하였습니다.

org.springframework.dao.InvalidDataAccessApiUsageException: Invalid date type class learn.board.domain.member.entity.Member for member learn.board.domain.member.entity.Member@3054cdd3; Supported types are [org.joda.time.DateTime, org.joda.time.LocalDateTime, java.util.Date, java.lang.Long, long]; nested exception is java.lang.IllegalArgumentException: Invalid date type class learn.board.domain.member.entity.Member for member learn.board.domain.member.entity.Member@3054cdd3; Supported types are [org.joda.time.DateTime, org.joda.time.LocalDateTime, java.util.Date, java.lang.Long, long]

Caused by: java.lang.IllegalArgumentException: Invalid date type class learn.board.domain.member.entity.Member for member learn.board.domain.member.entity.Member@9e092b5; Supported types are [org.joda.time.DateTime, org.joda.time.LocalDateTime, java.util.Date

해당 예외 클래스에 대한 설명입니다.

스크린샷 2023-04-20 오후 6.55.24.png

해당 예외에 대한 관련 내용을 찾아본 결과 AuditingEntityListener 클래스를 이용하여 시간 변환을 할 때 ZonedDateTime 으로 변환되지 않는 이슈가 있는것을 알았습니다.

관련 이슈 링크

https://github.com/spring-projects/spring-data-jpa/issues/1579

https://github.com/spring-projects/spring-boot/issues/10743