Skip to content
Advertisement

Mapping List to DynamoDB

I’m trying to map to DynamoDB list of dates in Java

@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);
    }
}

I have written my own converter but it works only for LocalDateTime but not for the List. Does anyone know how to do it correctly?

Should I write separate converter that will return list of strings where each string will be converted from localdatetime?

Advertisement

Answer

I wrote converter like below and it works as I wanted 😉

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());
}

}

User contributions licensed under: CC BY-SA
5 People found this is helpful
Advertisement