Нет AWS DynamoDB Java SDK не может отображать java.time.LocalDateTime изначально без использования какой-либо аннотации.
Чтобы сделать это сопоставление, вы должны использовать аннотацию DynamoDBTypeConverted
, представленную в версии 1.11.20 AWS Java SDK. Начиная с этой версии аннотация 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
.
Теперь аннотацию [DynamoDBMarshalling] (http://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/dynamodbv2/datamodeling/DynamoDBMarshalling.html) является устаревшим, вы можете использовать аннотацию [DynamoDBTypeConverted] (http://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/dynamodbv2/datamodeling/DynamoDBTypeConverted.html). См. Мой ответ для получения дополнительной информации. –