2017-02-26 9 views
0

私はAmazon AWS DynamoDB for androidを使用していますが、クエリのKeyConditionExpressionを設定する方法はありません。Android用DynamoDbでKeyConditionExpressionパラメータを設定できません

[http://docs.aws.amazon.com/AWSAndroidSDK/latest/javadoc/com/amazonaws/mobileconnectors/dynamodbv2/dynamodbmapper/DynamoDBQueryExpression.html][1]を参照]。 DynamoDBQueryExpressionクラスにwithKeyConditionExpression()メソッドがありません。

私はdynamodbテーブルに対してクエリを作成しようとしていますが、キー条件値を設定する方法はありません。次のように

答えて

0

keyConditionExpressionが設定されている:

AWSDynamoDBQueryExpression *queryExpression = [AWSDynamoDBQueryExpression new]; 
queryExpression.keyConditionExpression = @"#bookId = :bookId"; 
queryExpression.expressionAttributeNames = @{ 
              @"#bookId" : @"bookId", 
              }; 
queryExpression.expressionAttributeValues = @{ 
               @":bookId" : self.selectedBookId, 
               }; 
0

私は.withKeyConditionExpression()メソッドがエラーを与えていた私のAndroidのアプリケーションのために同様の問題が発生しました。その代わりに、私は次のものを使用しました:

TestTable object = new TestTable();
object.setHashKeyValue( "12345"); // HashKeyの値を設定する

文字列queryString = "soverflow";

条件rangeKeyCondition =新しい条件().withComparisonOperator(ComparisonOperator.BEGINS_WITH.toString()) .withAttributeValueList(新しいAttributeValueの()withS(queryString.toString()));

DynamoDBQueryExpression newQueryExpression =新しいDynamoDBQueryExpression() .withHashKeyValues(オブジェクト)
.withRangeKeyCondition( "AttributeNameに"、rangeKeyCondition)
.withConsistentRead(偽)。

PaginatedQueryList result = mapper.query(TestTable.class、newQueryExpression);

ポイントは次のとおりです。テーブルをクエリすると、HashKeyとRangeKeyがテーブルのパーティションキーになります。インデックスをクエリする場合、ハッシュキーとレンジキーは、インデックス。

テーブルクラスで注釈を正しく使用し、インデックスのARNをポリシーに追加して承認するようにしてください。

1

残念ながらkeyConditionExpressionJava/Androidには存在しません。 Objective-C/iOSにはまだ存在するため、かなりの時間を無駄にしました。

そして、すべてのAWSドキュメントが依然としてそれを参照しているので、私は間違っていると思いました。新しいコードを書いて作業したら、ここで置換を文書化します。

関連する問題