java - 使用 Java SDK 更新 DynamoDB 中的 JSON 文档属性

标签 java json amazon-dynamodb aws-sdk

我有一个具有 2 个属性的 DynamoDB 表 - 用于 ID 的字符串和一个 JSON 文档。根据我的研究,我发现没有办法将 JSON 指定为 Java SDK 中 Table.updateItem() 的类型。对于我的更新,我想完全覆盖 JSON 文档,而不是更新特定属性。我还想做一个 updateItem 而不是 putItem (因为我似乎可以使用 putItem,因为我每次都只是覆盖文档)因为我最终将在我的表中拥有一些其他顶级属性,我不想每次需要进行更新时都覆盖或更新它们 - 我希望能够进来并只更新文档属性并完全更新它。

我已经得到了一些几乎适用于我的 CRUD 操作的东西,但我想知道是否有更好的方法。例如我正在做这样的事情:

public <T extends BaseEntity> void updateObject(T newEntity, UUID uuid) {
    try {
        TypeReference<HashMap<String, Object>> typeRef = 
            new TypeReference<HashMap<String, Object>>() {};
        HashMap<String, Object> dataMap = 
            mapper.readValue(mapper.writeValueAsString(newEntity), typeRef);

        UpdateItemSpec updateItemSpec = new UpdateItemSpec()
                .withPrimaryKey("Id", uuid.toString())
                .withAttributeUpdate(new AttributeUpdate("data").put(dataMap))
                .withReturnValues(ReturnValue.UPDATED_NEW);

        UpdateItemOutcome outcome = table.updateItem(updateItemSpec);
    } catch (Exception e) {}
}

我真的希望我能做这样的事情:

UpdateItemSpec updateItemSpec = new UpdateItemSpec()
    .withPrimaryKey("Id", uuid.toString())
    .withUpdateExpression("set #da = :d")
    .withNameMap(new NameMap()
        .with("#da", "data"))
    .withValueMap(new ValueMap()
        .withJSON(":d", objectAsStr)) // withJSON() method sadly doesn't exist
    .withReturnValues(ReturnValue.UPDATED_NEW);

非常感谢任何帮助或建议。谢谢。

最佳答案

今天,似乎是 ValueMap.withJSON(String) 方法 exists .

关于java - 使用 Java SDK 更新 DynamoDB 中的 JSON 文档属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38596239/

相关文章:

java - 按下按钮后更新屏幕

DDB 中复合范围键的 Java 注释

node.js - 如何使用 dynamoose 进行排序

java - Eclipse Java : missing jars from plugin library, 推荐替代方案或解决方案?

java - 当项目列在 strings.xml 中而不是 Android Studio 中的静态项目时,如何删除在按钮上单击 Spinner 中选择的项目?

java - 搜索手机和 SD 卡的整个存储空间以查找音乐播放器

json - postgres-simple - 没有因使用 ‘query’ 而产生的 (ToRow Int) 实例

C# NewtonSoft Single Object 或 Array JsonConverter 不工作,没有错误

json - 0x800a1391-JavaScript运行时错误: 'JSON' is undefined in IE 10

GoLang 更新 DynamoDB