Я переключаюсь с MongoDB на DynamoDB в проекте.Сейчас я пытаюсь сохранить этот объект Post в БД.Я использую DynamoDBTypeConverter для преобразования ZonedDateTime в строку, так как DynamoDB не поддерживает ZonedDateTime.
Это прекрасно работает, но когда я добавляю поле ZonedDateTime в объект Comment и пытаюсь преобразовать его, оно не работает.Я попытался добавить конвертер в класс Comment и попытался использовать конвертер в классе Post для Comment, но, похоже, ничего не работает.Есть ли способ преобразовать поле во вложенном объекте для DynamoDB?
com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMappingException: Cannot marshall type class java.time.ZonedDateTime without a custom marshaler or @DynamoDBDocument annotation.
@DynamoDBTable(tableName = "Post")
public class Post {
@DynamoDBHashKey
private String postNumber;
private ZonedDateTime date;
private List<Comment> comments;
@DynamoDBTypeConverted(converter = ZonedDateTimeConverter.class)
@DynamoDBAttribute
public ZonedDateTime getDate() {
return date;
}
@DynamoDBAttribute(attributeName = "comments")
public List<Comment> getComments() {
return comments;
}
static public class ZonedDateTimeConverter implements DynamoDBTypeConverter<String, ZonedDateTime> {
@Override
public String convert(final ZonedDateTime time) {
return time.toString();
}
@Override
public ZonedDateTime unconvert(final String stringValue) {
return ZonedDateTime.parse(stringValue);
}
}
@DynamoDBDocument
public class Comment {
private String commentNumber;
@NotNull
private User user;
private ZonedDateTime date;
@DynamoDBTypeConverted(converter = ZonedDateTimeConverter.class)
@DynamoDBAttribute
public ZonedDateTime getDate(){
return this.date;
}
static public class ZonedDateTimeConverter implements DynamoDBTypeConverter<String, ZonedDateTime> {
@Override
public String convert(final ZonedDateTime time) {
return time.toString();
}
@Override
public ZonedDateTime unconvert(final String stringValue) {
return ZonedDateTime.parse(stringValue);
}
}