Я использую DynamoDBMapper для класса, скажем, «Пользователь» (имя пользователя - первичный ключ), на котором есть поле, в котором указано «Статус». Это таблица ключей Hash + Range, и каждый раз, когда изменяется статус пользователя (изменения происходят крайне редко), мы добавляем новую запись в таблицу вместе с меткой времени (которая является ключом диапазона). Чтобы извлечь текущее состояние, это то, что я делаю:Предложение DynamoDB withLimit с DynamoDBMapper.query
DynamoDBQueryExpression expr =
new DynamoDBQueryExpression(new AttributeValue().withS(userName))
.withScanIndexForward(false).withLimit(1);
PaginatedQueryList<User> result =
this.getMapper().query(User.class, expr);
if(result == null || result.size() == 0) {
return null;
}
for(final User user : result) {
System.out.println(user.getStatus());
}
Это по какой-то причине, печатаю все статусы пользователя был до сих пор. Я установил scanIndexForward
в false, чтобы он был в порядке убывания, и я установил предел 1
. Я ожидаю, что это вернет последний сингл запись в таблице для этого имени пользователя.
Однако, когда я даже смотреть на проволочных журналы одного и того же, я вижу огромное количество записей, возвращаемых, гораздо больше, чем 1. В настоящее время, я использую:
final String currentStatus = result.get(0).getStatus();
Что я пытаясь понять здесь, что это за пункт withLimit
в этом случае, или я делаю что-то неправильно?