1. Issue Description
- 발생한 예외
org.springframework.dao.InvalidDataAccessApiUsageException:
Cannot convert unsupported date type java.time.LocalDateTime to java.time.ZonedDateTime;
Supported types are [java.time.LocalDateTime, java.time.LocalDate, java.time.LocalTime,
java.time.Instant, java.util.Date, java.lang.Long, long]
2. 원인 추론
- ServiceImpl 다음에 터진 예외였고, ZonedDateTime이 언급되어 있으므로 Auditing에서 문제가 생겼을 거라고 판단
- jpa zoneddatetime 검색
- 발견한 블로그 글
- @CreatedDate와 @LastModifiedDate는 ZonedDateTime을 지원하지 않음
3. 해결
- ZonedDateTime → LocalDateTime으로 타입 변경하거나
- @CreatedDate와 @LastModifiedDate 기능을 사용하지 않고 @PrePersist와 @PreUpdate 어노테이션을 이용해서 구현하는 것
→ ZonedDateTime 타입을 유지하기 위하여 2번 방법을 이용해보기로 했다.
- 원래 코드
@Getter
@MappedSuperclass
@EntityListeners(AuditingEntityListener.class)
public abstract class Timestamped {
@CreatedDate()
@Column(updatable = false)
private ZonedDateTime createdAt;
}
- 수정 코드
@Getter
@MappedSuperclass
@EntityListeners(AuditingEntityListener.class)
public abstract class Timestamped {
@Column(updatable = false)
private ZonedDateTime createdAt;
@PrePersist // Entity가 INSERT 되기 전에 원하는 메서드 실행
public void prePersist() {
this.createdAt = ZonedDateTime.now();
}
}
4. 결과
createdAt 등록 완료!
'STUDY > Trouble Shooting' 카테고리의 다른 글
CORS란? Spring Security에 따른 CORS 설정 (1) | 2024.09.16 |
---|---|
Docker PostgreSQL에서 정렬이 이상하게 되는 문제 (2) | 2024.09.02 |
Redis Docker Container와 Spring Boot 연결이 안 되는 오류 (0) | 2024.05.22 |
만료된 토큰에서 토큰에 저장된 정보를 가져올 수 없는 오류 (0) | 2024.05.22 |
Slack Webhook을 이용한 메시지 미리보기가 안되는 오류 (0) | 2024.05.22 |