gpt4 book ai didi

amazon-web-services - DynamoDb 无法保存 map 数据(java)

转载 作者:行者123 更新时间:2023-12-02 03:00:16 29 4
gpt4 key购买 nike

我正在尝试将数据保存到 dynamoDb 中,但该数据也包含一些 Map 属性。但是在保存该数据时出现错误。以下是我用于从请求中保存数据的域类:

@DynamoDBTable(tableName = "ottMiddleware_rails")
public class RailsCmsDomain {

@DynamoDBHashKey(attributeName = "railId")
private String railId;

@DynamoDBTyped
@DynamoDBAttribute(attributeName = "railLogic")
private Map<String, Object> railLogic;

@DynamoDBAttribute(attributeName = "railSourceType")
private String railSourceType;

@DynamoDBAttribute(attributeName = "railTitle")
private RailCmsTitleDomain railTitle;

@DynamoDBTyped
@DynamoDBAttribute(attributeName = "restrictions")
private Map<String, Object> restrictions;

我提出以下要求:
{
"railId": "railOne",
"railLogic": {
"programType": 1,
"railSourceUrl": "http://myUrl"
},
"railSourceType": "myRail",
"railTitle": {
"tam": "Raan Phan",
"def": "சிறப்பு கட்டமைப்பு"
},
"restrictions": {
"clients": [
"abc",
"xyz"
],
"periodStart": 1506572217
}
}

我正在使用以下代码将我的数据保存到 dynamoDb
public Boolean saveUpdateRailsDetails(RailsCmsDomain railsDomain) {
DynamoDBUtil dynamoDBUtil = new DynamoDBUtil();
AmazonDynamoDB dynamoDBClient = dynamoDBUtil.getDynamoDBClient();
DynamoDBMapper mapper = new DynamoDBMapper(dynamoDBClient);
mapper.save(railsDomain);
return true;
}

请建议我如何将 map 保存到 dynamoDb 中。我将数据作为 map ,因为在后期阶段,有可能将更多数据添加到 map 属性中,并且该数据可以是任何数据类型。我收到以下错误:
errorMessage": "not supported; requires @DynamoDBTyped or 
@DynamoDBTypeConverted"
"errorType":
"com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMappingException"

最佳答案

当我需要在 dynamodb 中存储 map 时,我只是用 @DynamoDBTypeConverted(converter = MapConverter.class) 注释了 map 的 getter 方法,并且在转换器中只是将 map 序列化为一个 json 字符串,这样您就可以检索 map 以及除此之外的所有内容如果需要,将无法在 queryExpressions 中使用它。

因此,如果您希望能够查询 map 中的对象,可以考虑使用 @DynamoDBDocument 注释您在 map 中使用的对象,这样它会被 dynamodb 自动序列化为文档并使用 Set 而不是映射到您的父对象。

关于amazon-web-services - DynamoDb 无法保存 map 数据(java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46544504/

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