【发布时间】:2018-03-17 01:42:15
【问题描述】:
我有一个User 实体和一个id
@DynamoDBTable(tableName = "User")
public class User {
...
@DynamoDBHashKey(attributeName = "id")
@DynamoDBAutoGeneratedKey
public String getId() {
...
}
// other attributes, getters and setters omitted for simplicity
...
}
还有一个User 表,其键名为id,类型为S
final ArrayList<KeySchemaElement> keySchema = new ArrayList<KeySchemaElement>();
keySchema.add(new KeySchemaElement().withAttributeName(pKeyName).withKeyType(KeyType.HASH));
final ArrayList<AttributeDefinition> attributeDefinitions = new ArrayList<AttributeDefinition>();
attributeDefinitions.add(new AttributeDefinition().withAttributeName(pKeyName).withAttributeType(pKeyType));
final CreateTableRequest request = new CreateTableRequest().withTableName(pTableName).withKeySchema(keySchema)
.withProvisionedThroughput(new ProvisionedThroughput().withReadCapacityUnits(10L).withWriteCapacityUnits(5L));
request.setAttributeDefinitions(attributeDefinitions);
关于执行“保存”操作
public <S extends User> S save(final S pUser) {
mapper.save(pUser);
return pUser;
}
我从 DBMapper 代码中得到一个 NullPointerException
java.lang.NullPointerException: null
at com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapper$SaveObjectHandler.doPutItem(DynamoDBMapper.java:883) ~[aws-java-sdk-dynamodb-1.11.295.jar!/:na]
...
at com.amazonaws.services.dynamodbv2.datamodeling.AbstractDynamoDBMapper.save(AbstractDynamoDBMapper.java:123) ~[aws-java-sdk-dynamodb-1.11.295.jar!/:na]
at hello.user.repository.UserRepository.save(UserRepository.java:85) ~[classes!/:0.1.0]
我的用户对象不是null,它的任何属性都不是id,它是自动生成的。知道发生了什么吗?
空 id 是否导致异常?这不是我应该期望@DynamoDBAutoGeneratedKey 工作的方式吗?根据文档和示例
https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DynamoDBMapper.Annotations.html#DynamoDBMapper.Annotations.DynamoDBAutoGeneratedKey
应该是这样的
【问题讨论】:
-
“更新”使上面的所有内容无效。请重写帖子以提出真正的问题。您可能应该删除它,然后 edit 它然后取消删除以避免投票/关闭投票。
-
您有
id的二传手吗?也许你需要一个? -
@JimGarrison,已经清理了这个问题。它仍然存在。保存时会出现 NullPointerException,并且库和文档都特别有助于说明原因。
-
@Rohan,我有一个简单的 ID 公开设置器。为简单起见,我从问题中省略了它
标签: java amazon-dynamodb