我使用Amazon AWS DynamoDB for android,但是,我无法为查询设置KeyConditionExpression。
见[http://docs.aws.amazon.com/AWSAndroidSDK/latest/javadoc/com/amazonaws/mobileconnectors/dynamodbv2/dynamodbmapper/DynamoDBQueryExpression.html][1]。 DynamoDBQueryExpression类缺少withKeyConditionExpression()方法。
我试图对dynamodb表进行查询,但我无法设置关键条件值。
答案 0 :(得分:1)
不幸 keyConditionExpression Java / Android不再存在。我浪费了大量时间,因为它仍然存在于Objective-C / iOS。
由于所有AWS文档仍然引用它,我以为我错了。一旦我编写了新代码并运行,我将在此处记录替换。
答案 1 :(得分:0)
keyConditionExpression
设置如下:
AWSDynamoDBQueryExpression *queryExpression = [AWSDynamoDBQueryExpression new];
queryExpression.keyConditionExpression = @"#bookId = :bookId";
queryExpression.expressionAttributeNames = @{
@"#bookId" : @"bookId",
};
queryExpression.expressionAttributeValues = @{
@":bookId" : self.selectedBookId,
};
答案 2 :(得分:0)
我的Android应用程序遇到了类似的问题,其中.withKeyConditionExpression()方法给出了错误。而不是那样,我用了:
TestTable object = new TestTable();
object.setHashKeyValue( “12345”); //设置HashKey的值
String queryString =“soverflow”;
条件rangeKeyCondition = new Condition()。withComparisonOperator(ComparisonOperator.BEGINS_WITH.toString()) .withAttributeValueList(new AttributeValue()。withS(queryString.toString()));
DynamoDBQueryExpression newQueryExpression = new DynamoDBQueryExpression()
.withHashKeyValues(对象)
.withRangeKeyCondition(“AttributeName”,rangeKeyCondition)
.withConsistentRead(假);
PaginatedQueryList result = mapper.query(TestTable.class,newQueryExpression);
要点是,如果您正在查询表,则HashKey和RangeKey将是表的分区键,如果您要查询索引,则哈希键和范围键将是索引的分区键
确保在Table Class中正确使用Annotations,并将Index的ARN添加到Policy中以进行授权。