Java 8 date/time type java.time.LocalDateTime not supported by default
LocalDataTime을 역직렬화하지 못해서 생기는 문제입니다.
jackson-datatype-jsr310 종속성을 추가하고 해결해야 됩니다.
//자바 역직렬화 문제 해결 패키지
implementation 'com.fasterxml.jackson.datatype:jackson-datatype-jsr310'
implementation 'com.fasterxml.jackson.core:jackson-databind'
추가적으로 만약 캐시로 사용할 객체에 LocalDateTime 타입의 값이 존재한다면 위처럼 @JsonSerialize, @JsonDeserialize 어노테이션을 기입해줘야 합니다.. 그렇지 않으면 오류가 발생합니다. (대다수의 Entity에 공통적으로 created_at, updated_at을 넣어주기 위해 위처럼 MappedSuperclass를 사용하고 있다)
아래 코드 참고
@Getter
@Setter
@MappedSuperclass
@EntityListeners(value = {AuditingEntityListener.class})
public abstract class BaseEntity implements Serializable {
@CreatedDate
@JsonSerialize(using = LocalDateTimeSerializer.class)
@JsonDeserialize(using = LocalDateTimeDeserializer.class)
@Column(name = "created_at", updatable = false)
private LocalDateTime createdAt;
@LastModifiedDate
@JsonSerialize(using = LocalDateTimeSerializer.class)
@JsonDeserialize(using = LocalDateTimeDeserializer.class)
@Column(name = "updated_at", updatable = true)
private LocalDateTime updatedAt;
}
내 경우에는 레디스 캐싱처리 할때 직렬화 또는 역직렬화를 이용해 데이터 저장과 조회를 하기 때문에 반드시 해당 어노테이션을 작성해야 했습니다.
또한 Project의 메인 클래스에 @EnableJpaAuditing을 기입해주어야 @MappedSuperclass를 이용할 수 있습니다.
@SpringBootApplication
@EnableJpaAuditing
@EnableCaching
public class ProjectApplication {
public static void main(String[] args) {
SpringApplication.run(ProjectApplication.class, args);
}
}
'스프링 부트 > Error-Log' 카테고리의 다른 글
[Error-Log] ORA-01861: literal does not match format string (0) | 2022.08.25 |
---|---|
[Error-Log] MultipleBagFetchException 해결법 (0) | 2022.04.16 |
[Error-Log] ConcurrentModificationException 해결법 (0) | 2022.02.04 |
스프링 레디스 Redis 에러 Creating Server TCP listening socket *:6379: bind: No error (0) | 2022.01.18 |
entitygraph 사용시 주의할 점 (1) | 2022.01.18 |
댓글