在dynamo db mapper中使用hypen作为键名

时间:2018-03-28 20:30:53

标签: java amazon-web-services amazon-dynamodb

我收到Invalid KeyConditionExpression:语法错误;令牌:“ - ”,附近:foo-bar,当键名称为hypen时。我已经尝试使用with表达式属性名称和属性值但仍然得到相同的错误。我该如何解决这个问题?

Invalid KeyConditionExpression: Syntax error; token: "-", near:
Map<String,String> eak = new HashMap<>();

        eak.put("#k","foo-bar");
Map<String, AttributeValue> eav = new HashMap<>();
eav.put(":v", new AttributeValue().withS("val"));
DynamoDBQueryExpression<J> queryExpression = new DynamoDBQueryExpression<J>()
                    .withKeyConditionExpression("#k = :v")
                    .withExpressionAttributeNames(eak)
                    .withExpressionAttributeValues(eav)
                    .withScanIndexForward(true);

1 个答案:

答案 0 :(得分:1)

在使用ggplot( mtcars, aes( factor(cyl), fill = factor(vs) ) ) + geom_bar(position = position_dodge(preserve = "single")) 时,您似乎无法使用包含连字符foo-bar的列。

在您的示例中,KeyConditionExpression
•用于.withKeyConditionExpression("#k = :v")
•与.f("foo-bar = val")类似(请注意.f("foo - bar = val")周围的空格)。

-不再被解释为列名中的字符,而是解释为操作数。
出于显而易见的原因,这会引发错误,因为-不在允许的位置。