У меня есть требование в обновлении, пользователь обновляет несколько полей до нового значения, и немногие делают его пустым. Нужно обновить его до DynamoDB. Приведенный ниже код работает отлично, но устанавливает значение NULL для поля decision
, если значение равно «» (пусто). что-то вроде decision Null : true
в консоли aws.
Есть ли лучший способ удалить столбец или сделать его пустым вместо установки на ноль? Пожалуйста, помогите.
UpdateItemSpec updateItemSpec = new UpdateItemSpec().withPrimaryKey("GUID", "guidHashed", "VENDOR", "vendorValue");
NameMap nameMap = new NameMap();
ValueMap valueMap = new ValueMap();
StringBuilder queryString = new StringBuilder();
queryString.append("set");
if (decision != null && decision.isEmpty()) { // condition if the field is empty ""
nameMap.with("#decision_name", "decision");
valueMap.withNull(":decision_value");
queryString.append("#decision_name = :decision_value,");
}
if (StringUtils.isNotEmpty(decision)) { // condition if field is not empty
nameMap.with("#decision_name", "decision");
valueMap.with(":decision_value", decision);
queryString.append("#decision_name = :decision_value,");
}
//i have many fields
updateItemSpec.withNameMap(nameMap);
updateItemSpec.withValueMap(valueMap);
updateItemSpec.withUpdateExpression(requestParams);
Table table = dynamoDB.getTable("INFO_TABLE");
table.updateItem(updateItemSpec);
Я пытался с withAttributeUpdates с действием удалить, но DynamoDb соглашается, что Can not use both expression and non-expression parameters in the same request: Non-expression parameters: {AttributeUpdates} Expression parameters