首页 > 解决方案 > AWS DynamoDb 使用 DynamoDbEnhancedClient 读取 BatchRead

问题描述

BatchGetResultPageIterable batchResults = dynamoDbEnhancedClient
    .batchGetItem(BatchGetItemEnhancedRequest.builder()
    .readBatches(ReadBatch.builder(Analysis.class).mappedTableResource(analysisTable)
        .addGetItem(GetItemEnhancedRequest.builder()
        .key(Key.builder().partitionValue(projectId).build()).build())
    .build())
.build());
batchResults.forEach(page -> page.resultsForTable(analysisTable)
                .forEach(item -> System.out.println(item.getFileId())));

我使用了上述的.. 但我面临的问题是 software.amazon.awssdk.services.dynamodb.model.DynamoDbException:提供的关键元素与架构不匹配(服务:DynamoDb,状态代码:400,请求 ID:36V6D9GAGEUA817ODOGV52PF6VVV4KQNAO5AEMVJF66Q9ASUAAJG )

AnalysisTable
=================
PartitionKey    Sort Key   Name
A===============>1.txt=====>ABC              
A===============>2.txt=====>DEF
A===============>3.txt=====>GHI
A===============>4.txt=====>JKL
class Analysis {
    private String projectId;
    private String sampleId;
    private String sampleName;
    private String description;
    //setter & getters
}

标签: javaamazon-web-servicesamazon-dynamodb

解决方案


.sortValue()由于您有分区键和排序键,我认为您缺少Key.builder()

它需要是Key.builder().partitionValue(projectId).sortValue(your-sort-key).build()


推荐阅读