dynamoDb 中的更新查询抛出异常

问题描述 投票:0回答:1

我对 DynamoDb 相当陌生。我必须使用 id 分区键和 number 排序键来更新表中名为 status 和 ModifiedTime 的属性。我下面的代码抛出了

提供的关键元素与架构异常不匹配。有人可以帮我找到我在这里缺少的东西吗?

public static UpdateItemSpec updateData(String id, int number, String status, long modifiedTime) {
    String partitionKey = "id";
    String statusAttribute = "status";
    String modifiedTimeAttribute = "modifiedTime";
    String numberAttribute = "number";

    String expressionAttributeForStatus = "#s";
    String expressionAttributeForModifiedTime = "#m";
    String expressionAttributeForNumber = "#b";

    return new UpdateItemSpec()
            .withPrimaryKey(new PrimaryKey(partitionKey, id))
            .withConditionExpression("#b = :Num")
            .withUpdateExpression("SET " + expressionAttributeForStatus + " = :newStatus, " +
                    expressionAttributeForModifiedTime + " = :newModifiedTime")
            .withNameMap(new NameMap()
                    .with(expressionAttributeForStatus, statusAttribute)
                    .with(expressionAttributeForModifiedTime, modifiedTimeAttribute)
                    .with(expressionAttributeForNumber, numberAttribute))
            .withValueMap(new ValueMap()
                    .with(":newStatus", status)
                    .with(":newModifiedTime", modifiedTime)
                    .with(":Num", number))
            .withReturnValues(ReturnValue.UPDATED_NEW);
  }
java amazon-dynamodb
1个回答
0
投票

主键采用以下参数:

PrimaryKey(String hashKeyName, Object hashKeyValue, String rangeKeyName, Object rangeKeyValue)

在您的情况下,您不会传入完整的主键,它应该包含您的分区和排序键。

© www.soinside.com 2019 - 2024. All rights reserved.