java - 用于 java.time.LocalDateTime 的 DynamoDBMapper

标签 java datetime amazon-dynamodb

我在我的 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/

相关文章:

java - 计算给定字母在Java中出现的句子

java - Ionic 4,Android Studio,Gradle,Java jdk或Cordova错误

java - 如何在 Eclipse 中导入两个项目,就像一个

mysql - 使用 mysql 查询选择小于当前日期的记录?

javascript - 将 JSON 日期时间对象转换为 JavaScript 对象

amazon-web-services - 从 dynamodb 流中读取数据

javascript - 使用 DynamoDB.DocumentClient 成功进行 transactWrite 后,ItemCollectionMetrics 为空

java - 如何通过 Java 中的 Executor Framework 在 DynamoDb 中获得最佳批量插入率?

java - 如何从元素中获取用户输入并提供准确的响应?

c# - 将数据从(大)文件 Excel 导入到 datagridview,然后导入数据库 - 为什么插入到数据库需要这么长时间并且不保存所有数据?