【发布时间】:2014-02-15 09:56:55
【问题描述】:
我下载了 AWS Java SDK 1.4.5 版,但在迁移 DynamoDB 表上的查询时遇到问题。这是一个简单的哈希 + 范围查询。
V1 工作正常:
Condition c = new Condition().withComparisonOperator(ComparisonOperator.LT)
.withAttributeValueList(new AttributeValue(new Date().toString()));
DynamoDBQueryExpression q = new DynamoDBQueryExpression(new AttributeValue("john")).withRangeKeyCondition(c);
API 的 V2 似乎有点不同。方法签名更改需要将代码重写为:
Condition c = new Condition().withComparisonOperator(ComparisonOperator.LT)
.withAttributeValueList(new AttributeValue(new Date().toString()));
DynamoDBQueryExpression q = new DynamoDBQueryExpression()
.withIndexName("user")
.withHashKeyValues("john")
.withRangeKeyCondition("timestamp", c);
AWS SDK 抛出异常:
The range key(timestamp) in the query is the primary key of the table, not the range key of index(user)
是否有代码示例说明如何使用 DynamoDB 的新 v2 api 执行查询?
【问题讨论】:
-
哈希和范围属性名称是什么?
-
Chen,表名是Users,有一个hash和range key。 has 是“用户”,范围是“时间戳”。注意:自从我在 StackOverflow 上发布此内容后,我已经能够使用 AWS 低级 Java API 来实现此功能。我仍然无法使用更高级别的 API 解决这个问题。
标签: amazon-dynamodb