DynamoDBMappingException:HASH 密钥无映射

编写 DynamoDB Java 应用程序时,如果未正确配置表及其数据模型,则在写入表或从表中检索时,您可能会收到“哈希键无映射”错误。完整的例外将类似于:

com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMappingException: <YourClassNameHere>; no mapping for HASH key


答案 1

确保已声明带注释的映射类的 getter。public


答案 2

在这里检查两个有用的事情:

1)对于哈希键值的主设置器,请确保正确设置了表示法。 不是用于表的主哈希键的正确方法,也不是 。@DynamoDBHashKey@DynamoDBAttribute@DynamoDBIndexHashKey

2) 确保在表定义中定义了哈希键:

        CreateTableRequest createTableRequest = new CreateTableRequest()
                .withTableName("testtable")
                .withKeySchema(
                        new KeySchemaElement("id", KeyType.HASH)
                )
                .withProvisionedThroughput(new ProvisionedThroughput(1L, 1L))
                .withAttributeDefinitions(
                        new AttributeDefinition("id", "S")
                );

        CreateTableResult result = amazonDynamoDB.createTable(createTableRequest);

上面的表定义创建一个表“testtable”,其中包含一个标题为主索引或哈希键变量,并且类型用于字符串。idS

此外,如果使用继承,请确保没有两个具有相同名称的函数相互覆盖。Dynamo 将使用顶级 getter,这可能会导致问题。


推荐