You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用DynamoDB时AWS安卓应用出现DynamoDBMappingException错误求助

Fixing DynamoDBMappingException: Missing DynamoDBRangeKey Annotation

Hey there, let's break down this issue you're facing with your ParkInfoDO class and DynamoDB. That exception is telling you the DynamoDBMapper can't find a @DynamoDBRangeKey annotation on your model class, but it's expecting one—usually because there's a mismatch between your table's actual structure and the annotations in your code.

Here's how to troubleshoot and fix this:

1. Double-check your DynamoDB table structure

First, log into the AWS Console and navigate to your park_info table. Check the Key schema section:

  • If your table only has a Partition Key (park_id) and no Sort Key (Range Key), then your model class shouldn't have a @DynamoDBRangeKey annotation at all. The error is happening because the code is expecting a Range Key that doesn't exist in your table.
  • If your table does have a Sort Key (maybe you added it by accident, or the tutorial required it), then you need to add the corresponding annotation to your model class.

2. Adjust your ParkInfoDO class to match the table

Case 1: Table has only a Partition Key (park_id)

Make sure your model class only uses @DynamoDBHashKey for the partition key, and remove any @DynamoDBRangeKey annotations (or code that expects a Range Key). Here's a corrected example:

@DynamoDBTable(tableName = "park_info")
public class ParkInfoDO {
    private String parkId;

    @DynamoDBHashKey(attributeName = "park_id")
    public String getParkId() {
        return parkId;
    }

    public void setParkId(String parkId) {
        this.parkId = parkId;
    }

    // Add other fields with their respective annotations (like @DynamoDBAttribute) here
}

Note: Ensure the attributeName in @DynamoDBHashKey exactly matches your table's partition key name (park_id), not the camelCase field name in your code.

Case 2: Table has a Partition Key + Sort Key

If your table does have a Sort Key (e.g., park_name), add the @DynamoDBRangeKey annotation to the corresponding field in your model:

@DynamoDBTable(tableName = "park_info")
public class ParkInfoDO {
    private String parkId;
    private String parkName;

    @DynamoDBHashKey(attributeName = "park_id")
    public String getParkId() {
        return parkId;
    }

    public void setParkId(String parkId) {
        this.parkId = parkId;
    }

    @DynamoDBRangeKey(attributeName = "park_name")
    public String getParkName() {
        return parkName;
    }

    public void setParkName(String parkName) {
        this.parkName = parkName;
    }
}

3. Sync Mobile Hub-generated code with your table

If you used Mobile Hub to generate your model classes, make sure you've refreshed the code after making any changes to your DynamoDB table. Sometimes the generated code gets out of sync with the actual table structure—re-export the client code from Mobile Hub and re-import it into Android Studio to fix this.

4. Clean and rebuild your project

After adjusting the annotations, clean your Android Studio project (Build > Clean Project) and rebuild it (Build > Rebuild Project). This ensures any cached code is updated and the new annotations are picked up correctly.

Most likely, the issue is a simple mismatch between your table's key schema and the annotations in your ParkInfoDO class. Double-check that first, and you should be able to resolve the error quickly.

内容的提问来源于stack exchange,提问作者Zero

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:56:34