如何在Dynamo DB中更新预留关键字的值。错误:属性名称是保留关键字;保留关键字:数据

2020年10月25日 34点热度 0条评论

这是我正在操作的更新查询。错误在这里是“设置数据=:updateValue”,数据是Dynamo DB的保留关键字。我想我应该在这里使用update ExpressionAttributes,但不确定如何在这种情况下使用。

UpdateItemSpec updatetable = new UpdateItemSpec()
                .withPrimaryKey("pId", jsonContext.read("$.pId"))
                .withUpdateExpression("set data = :updateValue")
                .withValueMap(new ValueMap().with(":updateValue", jsonpathCreatorLocation2));
    locTable2.updateItem(updatetable);

解决方案如下:

final Map<String, String> expressions = new HashMap<>();
expressions.put("#d", "data");

UpdateItemSpec updatetable = new UpdateItemSpec()
                .withPrimaryKey("pId", jsonContext.read("$.pId"))
                .withUpdateExpression("set #d = :updateValue")
                .withValueMap(new ValueMap().with(":updateValue", jsonpathCreatorLocation2));
                .withExpressionAttributeNames(expressions);

locTable2.updateItem(updatetable);