문제 상황
LocalDateTime을 DynamoDB에 저장하려고 했으나, 다음과 같은 에러가 발생하였습니다.
InvalidDefinitionException: Joda date/time type `org.joda.time.LocalDateTime` not supported by default
해결 과정
LocalDateTime parsing 에러로 추측하였으며,
직접 LocalDateTime을 바꿔주는 Custom Converter를 작성하여 해당 에러를 해결해 줄 수 있었습니다.
public static class LocalDateTimeConverter implements DynamoDBTypeConverter<Date, LocalDateTime> {
@Override
public Date convert(LocalDateTime source) {
return Date.from(source.toInstant(ZoneOffset.UTC));
}
@Override
public LocalDateTime unconvert(Date source) {
return source.toInstant().atZone(TimeZone.getDefault().toZoneId()).toLocalDateTime();
}
}
이후, 사용하고자 하는 Entity에 적용해주면 됩니다.
- POCHAK의 경우, BaseEntity의 LocalDateTime attribute에 @DynamoDBTypeConverted(converter = LocalDateTimeConverter.class) 애노테이션을 추가해주었습니다.
public class BaseEntity {
...
@LastModifiedDate
@DynamoDBAttribute
@DynamoDBTypeConverted(converter = LocalDateTimeConverter.class)
private LocalDateTime lastModifiedDate;
...
}
참고 자료
'🌿 Spring > Spring Data DynamoDB' 카테고리의 다른 글
[Spring Data DynamoDB] Type Error 해결하기 ‐ @DynamoDBTyped (0) | 2024.08.03 |
---|---|
[Spring Data DynamoDB] Partition Key와 Sort Key를 같이 사용할 때 (0) | 2024.08.03 |
[Spring Data DynamoDB] 페이징 정리 (0) | 2024.08.03 |
[Spring Data DynamoDB] 쿼리 작업 정리 (0) | 2024.08.03 |
댓글