【问题标题】:Amazon aws android - Key() class returning errorAmazon aws android - Key() 类返回错误
【发布时间】:2015-08-18 09:34:02
【问题描述】:

我正在使用 aws-android-sdk-2.0.5-s3.jar 将 dynamoDB 集成到我的 android 应用程序中。我想从 DynamoDB 中的表中删除特定行。这是我正在使用的代码:

Key primaryKey = new Key().withHashKeyElement(targetValue);
DeleteItemRequest request = new DeleteItemRequest().withTableName("tablename").withKey(primaryKey);
ddb.deleteItem(request);

在此代码中,我收到一条错误消息,提示“无法将密钥解析为类型”

是不是因为这个类不在api中?请帮我解决这个问题。

我从以下链接获得代码:

http://aws.amazon.com/articles/3756417425850538


编辑


Map<String, AttributeValue> key = new HashMap<String, AttributeValue>();
key.put("targetValue", new AttributeValue().withS("value"));
DeleteItemRequest deleteItemRequest = new DeleteItemRequest("tablename", key);
DeleteItemResult deleteItemResponse = ddb.deleteItem(deleteItemRequest);

【问题讨论】:

    标签: android amazon-web-services amazon


    【解决方案1】:

    首先,您需要 -ddb .jar 而不是 -s3 jar 才能访问 DynamoDB。其次,我强烈建议升级到最新版本的 SDK,因为从那时起已经有许多版本和错误修复。最后,该博客主要是出于历史原因,查看当前 api 文档http://docs.aws.amazon.com/AWSAndroidSDK/latest/javadoc/ 的 DeleteItemRequest com.amazonaws.services.dynamodbv2.model.DeleteItemRequest 我没有看到对此 Key 对象的引用(或 v2 中的任何地方SDK 就这个问题),而是

    public DeleteItemRequest withKey(Map key)

    为了声明要删除的行的键。

    希望这会有所帮助, 韦斯顿

    【讨论】:

    • 谢谢韦斯顿。我已经更改了代码。请参阅编辑部分。现在我收到以下异常“com.amazonaws.AmazonServiceException:提供的关键元素与架构不匹配。”
    • 此错误表明“targetValue”不是您的表的哈希键,或者您的表设置为使用哈希和范围键。在这种情况下,两者都需要出现在地图中。您可以在 Dynamo 控制台中检查哈希键(可能还有范围键)
    猜你喜欢
    • 2013-03-16
    • 2017-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-06
    • 1970-01-01
    相关资源
    最近更新 更多