gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 12:23:30 24 4
gpt4 key购买 nike

我有一个具有 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com