Невозможно отсортировать по дате в DynamoDb - PullRequest
0 голосов
/ 17 марта 2019

Я пытаюсь использовать Spring-Data-DynamodB.У меня уже есть некоторые предметы в таблице.Я пытаюсь получить их по идентификатору и сортировке по дате.Мой bean-компонент выглядит следующим образом:

@DynamoDBTable(tableName = "TableName")
public class TableName {

@Id
private IDTable id;
private String hashkey;
private LocalDateTime createdTime;
private List<Map<String, AttributeValue>> records;
private String createdBy;

@DynamoDBHashKey(attributeName = "hashkey")
public String getHashkey() {
    return id != null ? id.getHashkey() : null;
}

public void setHashkey(String hashkey) {
    if(id == null) {
        id = new IDTable();
    }
    id.setHashkey(hashkey);
}

@DynamoDBRangeKey(attributeName = "created_time")
@DynamoDBTypeConverted(converter = LocalDateTimeConverter.class)
public LocalDateTime getCreatedTime() {
    return id.getCreatedTime() != null ? id.getCreatedTime() : null;
}

public void setCreatedTime(LocalDateTime createdTime) {
    if(id == null) {
        id = new IDTable();
    }
    id.setCreatedTime(createdTime);
}

@DynamoDBAttribute(attributeName = "records")
public List<Map<String, AttributeValue>> getRecords() {
    return records;
}

public void setRecords(List<Map<String, AttributeValue>> records) {
    this.records = records;
}

@DynamoDBAttribute(attributeName = "created_by")
public String getCreatedBy() {
    return createdBy;
}

public void setCreatedBy(String createdBy) {
    this.createdBy = createdBy;
}

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) {
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSz");
        return LocalDateTime.parse(stringValue, formatter);
    }
}
}

В моем репозитории я определил метод следующим образом:

List<TableName> findByHashkey(String hashKey,Sort sort);

Я хочу, чтобы записи были в порядке сортировки madeTime, но созданный TimeTime считается скорее строкой, чемLocalDateTime и я получаю все записи в порядке сортировки строк.Мне нужно, чтобы они были отсортированы по дате.

...