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

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);

最佳答案

似乎在使用foo-bar时,不能有包含连字符KeyConditionExpression的列。

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

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

10-08 06:20
查看更多