繁体   English   中英

映射列表<localdatetime>到 DynamoDB</localdatetime>

[英]Mapping List<LocalDateTime> to DynamoDB

我正在尝试 map 到 Java 中的 DynamoDB 日期列表

@DynamoDBTypeConverted(converter = LocalDateTimeConverter.class)
private List<LocalDateTime> acquisitionsDates;



public class LocalDateTimeConverter implements DynamoDBTypeConverter<String, LocalDateTime> {

    @Override
    public String convert(LocalDateTime dateTime) {
        return dateTime.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME);
    }

    @Override
    public LocalDateTime unconvert(String dateTimeStr) {
        return LocalDateTime.parse(dateTimeStr);
    }
}

我已经编写了自己的转换器,但它仅适用于 LocalDateTime 而不适用于列表。 有谁知道如何正确地做到这一点?

我是否应该编写单独的转换器来返回字符串列表,其中每个字符串都将从本地日期时间转换?

在接口 DynamoDBTypeConverter<S,T> 中表示 S - DynamoDB 标准类型,T - 对象的字段/属性类型。 使用 T 作为列表。

public class LocalDateTimeConverter implements DynamoDBTypeConverter<String, List<LocalDateTime>> {

    @Override
    public String convert(List<LocalDateTime> dateTime) {
        //your implementation
    }

    @Override
    public List<LocalDateTime> unconvert(String dateTimeStr) {
        //your implementation
    }
}

我写了下面这样的转换器,它可以按我的意愿工作;)

public class ListOfLocalDateTimesConverter implements DynamoDBTypeConverter<List<String>, List<LocalDateTime>> {
@Override
public List<String> convert(List<LocalDateTime> localDateTimes) {
    return localDateTimes
            .stream()
            .map(localDateTime -> localDateTime.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME))
            .collect(Collectors.toList());
}

@Override
public List<LocalDateTime> unconvert(List<String> strings) {
    return strings
            .stream()
            .map(str -> LocalDateTime.parse(str))
            .collect(Collectors.toList());
}

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM