gri*_*gon 3 amazon-web-services amazon-dynamodb aws-sdk
我有一个包含以下 KeySchema 的表:
KeySchema: [
{AttributeName: USER_ID,KeyType: HASH},
{AttributeName: COMPLETED,KeyType: RANGE}],
Run Code Online (Sandbox Code Playgroud)
用户 ID 只是一个整数,但COMPLETED它是创建记录时的时间戳。
我正在尝试使用以下代码检索记录:
Item item = tbl.getItem("USER_ID", "4216634082");
Run Code Online (Sandbox Code Playgroud)
但我收到此错误:
AmazonDynamoDBException: The provided key element does not match the schema (Service: AmazonDynamoDBv2; Status Code: 400; Error Code: ValidationException...
Run Code Online (Sandbox Code Playgroud)
由于范围键是一个时间戳,所以在我找到记录之前我不知道它是什么。我如何实现这一目标?
您正在调用getItem,这是按其键查找项目 - 如果键架构定义了散列和范围组件,则这需要散列和范围组件。
如果要获取具有特定散列(按范围键排序)的所有项目,则需要使用查询。例如:
Table table = dynamoDB.getTable("YourTable");
QuerySpec spec = new QuerySpec()
.withKeyConditionExpression("USER_ID = :user_id")
.withValueMap(new ValueMap()
.withString(":user_id", "4216634082"))
ItemCollection<QueryOutcome> items = table.query(spec);
Run Code Online (Sandbox Code Playgroud)
见http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/QueryAndScan.html的概念和http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/QueryingJavaDocumentAPI.html查看详细的Java SDK的文档。
(从文档链接中提取的示例)
| 归档时间: |
|
| 查看次数: |
5331 次 |
| 最近记录: |