DynamoDBMappingException:没有HASH密钥的映射

ano*_*932 6 java amazon-web-services amazon-dynamodb

编写DynamoDB Java应用程序时,如果未正确配置表及其数据模型,则在写入或从表中检索时,您可以收到"无映射HASH密钥"错误.完整的例外情况类似于:

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

Pav*_*vel 10

确保声明了带注释的映射类的getter public.

  • 谢谢!谢谢!谢谢! (2认同)

ano*_*932 5

这里有两个有用的东西:

1)对于哈希键值的主要setter,请确保@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);
Run Code Online (Sandbox Code Playgroud)

上面的表定义创建了一个表'testtable',其中主索引或散列键变量标题为id,并且类型S为string.

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