我正在使用dynamoDB ExpressionSpecBuilder
(Java)为数据库中的项目创建更新查询。我希望返回整个修改的资源,而不必单独指定所有属性。
有没有办法做到这一点?
最佳答案
如果您被迫使用ExpressionSpecBuilder
,我找不到任何方法。
但是,还有其他替代方法,例如UpdateItemRequest
,您可以将ReturnValues
属性设置为ALL_NEW
并获取所有属性作为映射:
UpdateItemRequest updateProgramCounterRequest = new UpdateItemRequest()
.withTableName(...)
.withUpdateExpression(...)
.withReturnValues(ReturnValue.ALL_NEW);
UpdateItemResult updateItemResult = amazonDynamoDB.updateItem(updateItemRequest);
Map<String, AttributeValue> attributes = updateItemResult.getAttributes();
然后,您可以将它们映射到您的资源。
更高级别的方法是使用DynamoDBMapper。根据您需要执行的更新类型,您还可以使用
save
方法并按照javadoc中的描述修改DynamoDBMapperConfig.SaveBehavior
属性来实现它:https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/dynamodbv2/datamodeling/DynamoDBMapper.html#save-T-com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBSaveExpression-com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapperConfig-