DynamoDBMapper for java.time.LocalDateTime

n00*_*00b 7 java datetime amazon-dynamodb

我在我的java应用程序中使用java.time.LocalDateTime.我也试图使用DynamoDBMapper并通过注释保存LocalDateTime变量.不幸的是我收到以下错误:

DynamoDBMappingException: Unsupported type: class java.time.LocalDateTime
Run Code Online (Sandbox Code Playgroud)

有没有办法让这个映射不使用DynamoDBMarshalling?

Syl*_*gat 17

没有AWS DynamoDB Java SDK无法在不使用任何注释的情况下本地映射java.time.LocalDateTime.

要执行此映射,您必须使用DynamoDBTypeConvertedAWS Java SDK 1.1120版中引入的注释.从此版本开始,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);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

使用此代码,存储的日期将以ISO-8601格式保存为字符串,如下所示:2016-10-20T16:26:47.299.