无法在DynamoDb for Android

时间:2017-02-26 01:30:18

标签: android amazon-web-services

我使用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表进行查询,但我无法设置关键条件值。

3 个答案:

答案 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中以进行授权。