DynamoDb условное обновление с пустыми полями - PullRequest
0 голосов
/ 11 января 2019

У меня есть требование в обновлении, пользователь обновляет несколько полей до нового значения, и немногие делают его пустым. Нужно обновить его до 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

...