我有一个带有哈希键(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 中实现这一点。任何帮助将非常感激。