由于命名约定,在使用DynamoDB AWS开发工具包时出现错误[没有哈希键映射] [英] Error while using DynamoDB AWS SDK [No Mapping for Hash Key] because of naming convention
问题描述
使用AWS JAva SDK定义DynamoDBHashKey时,我们使用@DynamoDBHashKey注释。
While using AWS JAva SDK, for defining DynamoDBHashKey we @DynamoDBHashKey annotation.
如果我使用以下注释,则很奇怪
@DynamoDBHashKey
String Abc
而不是
@DynamoDBHashKey
String abc
这给了我一个错误,
没有映射HASH键
[junit] com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapperTableModel.hashKey(DynamoDBMapperTableModel.java:119)
[junit] at com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapperTableModel $ Builder.build(DynamoDB) com.amazonaws.services.dynamodbv2.datamodeling.StandardModelFactories $ StandardTableFactory.getTable(StandardModelFactories.java:104)上的
[junit] com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapper上的
[junit]。 getTableModel(DynamoDBM apper.java:393)com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapper.generateCreateTableRequest(DynamoDBMapper.java:2148)
[junit] com.amazonaws.services.dynamodbv2。 datamodeling.AbstractDynamoDBMapper.generateCreateTableRequest(AbstractDynamoDBMapper.java:319)
this gives me an error, no mapping for HASH key [junit] at com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapperTableModel.hashKey(DynamoDBMapperTableModel.java:119) [junit] at com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapperTableModel$Builder.build(DynamoDBMapperTableModel.java:449) [junit] at com.amazonaws.services.dynamodbv2.datamodeling.StandardModelFactories$StandardTableFactory.getTable(StandardModelFactories.java:104) [junit] at com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapper.getTableModel(DynamoDBMapper.java:393) [junit] at com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapper.generateCreateTableRequest(DynamoDBMapper.java:2148) [junit] at com.amazonaws.services.dynamodbv2.datamodeling.AbstractDynamoDBMapper.generateCreateTableRequest(AbstractDynamoDBMapper.java:319)
我不明白为什么变量命名约定会在失败中起作用有想法吗?
I am unable to understand why does variable naming convention plays a role in failure Any Idea?
推荐答案
在这种情况下,自省魔法似乎无效。 使用参数 attributeName
强制属性名称。
Introspection magic does not appear to be working in this case. Force the attribute name with the parameter attributeName
.
@DynamoDBTable(tableName="Books")
public static class Book {
private String Abc;
@DynamoDBHashKey(attributeName="Abc")
public int getAbc() {
return Abc;
}
}
这篇关于由于命名约定,在使用DynamoDB AWS开发工具包时出现错误[没有哈希键映射]的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!