java.time.LocalDateTime 的 DynamoDBMapper
DynamoDBMapper for java.time.LocalDateTime
我在 java 应用程序中使用 java.time.LocalDateTime。我也在尝试使用 DynamoDBMapper
并通过注释保存 LocalDateTime
变量。不幸的是我收到以下错误:
DynamoDBMappingException: Unsupported type: class java.time.LocalDateTime
有没有办法不用 DynamoDBMarshalling
就可以得到这个映射?
不管我怎么说,我发现使用 DynamoDBMarshalling
来编组一个字符串是很简单的。这是我的代码片段和一个 AWS reference:
class MyClass {
...
@DynamoDBMarshalling(marshallerClass = LocalDateTimeConverter.class)
public LocalDateTime getStartTime() {
return startTime;
}
...
static public class LocalDateTimeConverter implements DynamoDBMarshaller<LocalDateTime> {
@Override
public String marshall(LocalDateTime time) {
return time.toString();
}
@Override
public LocalDateTime unmarshall(Class<LocalDateTime> dimensionType, String stringValue) {
return LocalDateTime.parse(stringValue);
}
}
}
没有 AWS DynamoDB Java SDK 无法在不使用任何注释的情况下本地映射 java.time.LocalDateTime。
要进行此映射,您必须使用 DynamoDBTypeConverted
annotation introduced in the version 1.11.20 of the AWS Java SDK. Since this version, the annotation 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
并通过注释保存 LocalDateTime
变量。不幸的是我收到以下错误:
DynamoDBMappingException: Unsupported type: class java.time.LocalDateTime
有没有办法不用 DynamoDBMarshalling
就可以得到这个映射?
不管我怎么说,我发现使用 DynamoDBMarshalling
来编组一个字符串是很简单的。这是我的代码片段和一个 AWS reference:
class MyClass {
...
@DynamoDBMarshalling(marshallerClass = LocalDateTimeConverter.class)
public LocalDateTime getStartTime() {
return startTime;
}
...
static public class LocalDateTimeConverter implements DynamoDBMarshaller<LocalDateTime> {
@Override
public String marshall(LocalDateTime time) {
return time.toString();
}
@Override
public LocalDateTime unmarshall(Class<LocalDateTime> dimensionType, String stringValue) {
return LocalDateTime.parse(stringValue);
}
}
}
没有 AWS DynamoDB Java SDK 无法在不使用任何注释的情况下本地映射 java.time.LocalDateTime。
要进行此映射,您必须使用 DynamoDBTypeConverted
annotation introduced in the version 1.11.20 of the AWS Java SDK. Since this version, the annotation 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
.