[에러노트] Java 8 date/time type java.time.LocalDateTime not supported by default

hyewon jeong·2023년 6월 28일
0

에러노트

목록 보기
28/41

1 발생

스프링 auditing 을 이용한 생성시간 및 수정시간을 timestemped 클래스를 만든 후 로그인 하려는 순간 에러가 발생했다.


2 코드

Java 8 date/time type java.time.LocalDateTime not supported by default

3 원인

Java 8 date/time type java.time.LocalDateTime not supported by default
LocalDataTime을 역직렬화하지 못해서 생기는 문제입니다.
추가적으로 만약 캐시로 사용할 객체에 LocalDateTime 타입의 값이
존재한다면 위처럼 @JsonSerialize, @JsonDeserialize 어노테이션을 기입해줘야 합니다.
그렇지 않으면 오류가 발생합니다.


4 해결

  1. gradle에 아래와 같이 추가하고
//자바 역직렬화 문제 해결 패키지
implementation 'com.fasterxml.jackson.datatype:jackson-datatype-jsr310'
implementation 'com.fasterxml.jackson.core:jackson-databind'
  1. 해당 LocalDateTime이 있는 클래스에 가서 @JsonSerialize, @JsonDeserialize 어노테이션을 기입해줘야 한다. 그렇지 않으면 오류가 발생한다. (나는 Timestamped라는 클래스를 따로 만들어서 createdAt, modifiedAt을 상속해서 사용했다)
@Getter
@MappedSuperclass
@EntityListeners(AuditingEntityListener.class)
public class TimeStamped {

  @JsonSerialize(using = LocalDateTimeSerializer.class)
  @JsonDeserialize(using = LocalDateTimeDeserializer.class)
  @CreatedDate
  private LocalDateTime createdAt;
  

  @JsonSerialize(using = LocalDateTimeSerializer.class)
  @JsonDeserialize(using = LocalDateTimeDeserializer.class)
  @LastModifiedDate
  private LocalDateTime modifiedAt;
  
}
profile
개발자꿈나무

0개의 댓글