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

标签 amazon-web-services amazon-dynamodb

我正在尝试将数据保存到 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/

相关文章:

error-handling - AWS DynamoDbExceptions应该如何处理?

amazon-dynamodb - 如何在不替换 DynamoDB 中的先前记录的情况下实现版本控制?

amazon-dynamodb - 有没有办法将数字转换为 DynamoDB 在 Step Functions 中期望的字符串?

amazon-web-services - AWS s3 - 触发对象创建,函数被连续调用

java - DynamoDB 查询使用非分区键获取项目

python - AWS IOT 连接超时异常

python - 如何通过Python访问AWS服务?

amazon-web-services - 对认知的使用/需要感到困惑

amazon-web-services - 在 Apache Airflow DAG 中使用 AWS SES 发送失败的电子邮件

amazon-web-services - 如何编写单元测试 aws-sdk-go-v2 dynamodb 实现