我在我的 Java 应用程序中使用 java.time.LocalDateTime。我还尝试使用 DynamoDBMapper
并通过注释保存 LocalDateTime
变量。不幸的是我收到以下错误:
DynamoDBMappingException: Unsupported type: class java.time.LocalDateTime
有没有办法在不使用 DynamoDBMarshalling
的情况下进行此映射?
最佳答案
没有任何 AWS DynamoDB Java SDK 无法在不使用任何注释的情况下本地映射 java.time.LocalDateTime。
要进行此映射,您必须使用 DynamoDBTypeConverted
AWS Java SDK 1.11.20 版中引入的注解。从这个版本开始,注释 DynamoDBMarshalling
已弃用。
你可以这样做:
class MyClass {
...
@DynamoDBTypeConverted( converter = LocalDateTimeConverter.class )
public LocalDateTime getStartTime() {
return startTime;
}
...
static public class LocalDateTimeConverter implements DynamoDBTypeConverter<String, LocalDateTime> {
@Override
public String convert( final LocalDateTime time ) {
return time.toString();
}
@Override
public LocalDateTime unconvert( final String stringValue ) {
return LocalDateTime.parse(stringValue);
}
}
}
使用此代码,存储的日期将作为字符串保存在 ISO-8601 中格式如下:2016-10-20T16:26:47.299
。
关于java - 用于 java.time.LocalDateTime 的 DynamoDBMapper,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28077435/