У меня есть таблица (профиль) с хеш-ключом (id), у меня есть GSI по имени и ключ диапазона по стране. Я хотел бы создать метод DAO, который будет извлекать мне все записи с заданным значением для имени и страны, примерно так: List getProfileWithNameAndCountry (name, country);
Первоначально я просто искал записи, используя только имя (GSI), используя следующий код, и он отлично работал:
Profile profile = new Profile();
profile.setCountry("name");
DynamoDBQueryExpression<Profile> queryExpression = new DynamoDBQueryExpression<Profile>()
.withIndexName("name-index")
.withHashKeyValues(profile)
.withConsistentRead(false);
Но теперь я хочу искать, используя как имя (GSI), так и страну (ключ диапазона). Я попытался изменить приведенный выше код на это, и это не удалось с исключением:
Profile profile = new Profile();
profile.setCountry("name");
Condition countryCondition = new Condition()
.withComparisonOperator(ComparisonOperator.EQ.toString())
.withAttributeValueList(new AttributeValue().withS(country));
DynamoDBQueryExpression<Profile> queryExpression = new DynamoDBQueryExpression<Profile>()
.withIndexName("name-index")
.withHashKeyValues(profile)
.withRangeKeyCondition("country", countryCondition)
.withConsistentRead(false);
Я действительно новичок в DynamoDB, и я не могу понять, как добиться этого в java. Любая помощь могла бы быть полезна.