You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中如何将List<LocalDateTime>映射到DynamoDB?

解决DynamoDB中List的映射问题

你当前的LocalDateTimeConverter仅支持单个LocalDateTime与String的转换,DynamoDB无法自动将其适配到集合类型(如List<LocalDateTime>),因此需要针对集合类型单独处理。下面提供两种可行方案:

方案一:编写List专属转换器

需要创建一个专门处理集合类型的转换器,实现DynamoDBTypeConverter<List<String>, List<LocalDateTime>>接口,完成列表与字符串列表的互相转换:

import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBTypeConverter;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.List;
import java.util.stream.Collectors;

public class LocalDateTimeListConverter implements DynamoDBTypeConverter<List<String>, List<LocalDateTime>> {
    private static final DateTimeFormatter FORMATTER = DateTimeFormatter.ISO_LOCAL_DATE_TIME;

    @Override
    public List<String> convert(List<LocalDateTime> dateTimeList) {
        if (dateTimeList == null) return null;
        return dateTimeList.stream()
                .map(dt -> dt.format(FORMATTER))
                .collect(Collectors.toList());
    }

    @Override
    public List<LocalDateTime> unconvert(List<String> dateTimeStrList) {
        if (dateTimeStrList == null) return null;
        return dateTimeStrList.stream()
                .map(str -> LocalDateTime.parse(str, FORMATTER))
                .collect(Collectors.toList());
    }
}

然后在实体类字段上指定该转换器:

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

方案二:使用@DynamoDBTypeConvertedJson(推荐)

如果不想手动编写集合转换器,可直接使用@DynamoDBTypeConvertedJson注解,它会自动将集合序列化为JSON字符串存储,读取时反序列化为List<LocalDateTime>,无需额外转换逻辑:

import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBTypeConvertedJson;

@DynamoDBTypeConvertedJson
private List<LocalDateTime> acquisitionsDates;

这种方式更简洁,适合大多数场景,DynamoDB SDK会自动处理JSON的序列化与反序列化。

内容的提问来源于stack exchange,提问作者piechos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 14:03:20