java - 在 dynamodb 映射器中使用连字符作为键名

标签 java amazon-web-services amazon-dynamodb

我收到无效的 KeyConditionExpression:语法错误; token: "-", 当键名有连字符时,near:foo-bar。我尝试使用 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);

最佳答案

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

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

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

关于java - 在 dynamodb 映射器中使用连字符作为键名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49543643/

相关文章:

java - Ajax 调用失败时重定向到注销页面

java - 在维护对 Java 7 的支持的同时使用@Repeatable

java - 跨服务器的 Servlet 到 Servlet 连接

c# - 具有条件更新的 DynamoDBVersion 属性

Java SE RESTful VS java EE

amazon-web-services - 使用 CloudFormation 更新 AWS Lambda 函数

.net - AWS Polly 集成 SDK

amazon-web-services - 如何在 Elastic Beanstalk 环境中运行的乘客独立上启用 "ngx_http_realip_module"?

amazon-web-services - AWS DynamoDB | AWS DynamoDB |如何查询两个日期之间的时间戳?

amazon-web-services - DynamoDB - 如何通过非主键的内容进行查询