먼저 LocalDateTime
에서 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
해당 예외 클래스에 대한 설명입니다.
해당 예외에 대한 관련 내용을 찾아본 결과 AuditingEntityListener
클래스를 이용하여 시간 변환을 할 때 ZonedDateTime
으로 변환되지 않는 이슈가 있는것을 알았습니다.
관련 이슈 링크
https://github.com/spring-projects/spring-data-jpa/issues/1579