好吧,所以我查看了this post,我查看了this other post。這是我的具體問題:DynamoDBMappingException:沒有HASH鍵的映射 - 儘管我清楚地映射了它
我有一個簡單的DynamoDB表稱爲「服務器」與單個分區鍵「serverName」。這裏的表格說明:
"table":{
"attributeDefinitions":[{
"attributeName":"serverName","attributeType":"S"
}],
"tableName":"server",
"keySchema":[{
"attributeName":"serverName","keyType":"HASH"
}],
"tableStatus":"ACTIVE",
"creationDateTime":"Jul 29, 2017 12:46:36 PM",
"provisionedThroughput":{
"numberOfDecreasesToday":0,
"readCapacityUnits":5,
"writeCapacityUnits":5
}
}
我有一個Java表定義,像這樣:
@DynamoDBTable(tableName="server")
public static class Server {
private String serverName;
private Room[] rooms;
Server() {}
Server(String serverName) {
this.serverName = serverName;
this.setRooms();
}
@DynamoDBHashKey(attributeName="serverName")
String getServerName() {
return serverName;
}
void setServerName(String serverName) {
this.serverName = serverName;
}
.
.
.
}
您可以在描述我的「服務器名」散列屬性,並在我的表定義見在Java中有@DynamoDBHashKey(attributeName="serverName")
。
有人可以幫助我弄清楚爲什麼我仍然越來越...
com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMappingException: Server; no mapping for HASH key
at com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapperTableModel.hashKey(DynamoDBMapperTableModel.java:119) ~[aws-java-sdk-dynamodb-1.11.105.jar!/:na]
at com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapperTableModel$Builder.build(DynamoDBMapperTableModel.java:449) ~[aws-java-sdk-dynamodb-1.11.105.jar!/:na]
at com.amazonaws.services.dynamodbv2.datamodeling.StandardModelFactories$StandardTableFactory.getTable(StandardModelFactories.java:107) ~[aws-java-sdk-dynamodb-1.11.105.jar!/:na]
at com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapper.getTableModel(DynamoDBMapper.java:393) ~[aws-java-sdk-dynamodb-1.11.105.jar!/:na]
at com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapper.load(DynamoDBMapper.java:431) ~[aws-java-sdk-dynamodb-1.11.105.jar!/:na]
at com.amazonaws.services.dynamodbv2.datamodeling.AbstractDynamoDBMapper.load(AbstractDynamoDBMapper.java:80) ~[aws-java-sdk-dynamodb-1.11.105.jar!/:na]
at com.animationlibationstudios.channel.inventory.persist.dynamodb.ServerDynamoRepository.readServer(ServerDynamoRepository.java:110) ~[classes!/:na]
at com.animationlibationstudios.channel.inventory.persist.dynamodb.ServerDynamoRepository.readServer(ServerDynamoRepository.java:26) ~[classes!/:na]
(我使用JDK 8和com.amazonaws PS:AWS-Java的SDK-dynamodb:1.11 .105)
您需要設置不同的訪問修飾符爲「getServerName」。看到我更新的答案。 –