0

我下载了 AWS Java 开发工具包 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 开发工具包引发异常:

The range key(timestamp) in the query is the primary key of the table, not the range key of index(user)                                        

有没有人有代码示例说明如何使用 DynamoDB 的新 v2 api 执行查询?

4

1 回答 1

1

抱歉,如果这晚了,但如果它对您或其他任何人有帮助,您的代码的问题是当您调用.withIndexName("john").

您使用withIndexName()本地或全局二级索引进行查询;不适用于使用表的哈希键或哈希键和范围键的查询。DynamoDB 正在寻找一个本地或全局二级索引"john",当您想要搜索哈希键为"john".

于 2014-02-15T01:56:55.000 回答