如何将DynamoDB的Item.getNumberSet()输出提供给Item.withNumberSet()?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将DynamoDB的Item.getNumberSet()输出提供给Item.withNumberSet()?相关的知识,希望对你有一定的参考价值。

我有一个包含数字集(NS)属性的ItemgetNumberSet(String attrName)将返回Set<BigDecimal>

我的意图是采取该NumberSet并将其存储在另一个ItemwithNumberSet(String attrName, Set<Number> vals)将不接受Set<BigDecimal>作为输入,虽然BigDecimalNumber

AmazonDynamoDB dynamoDbClient = AmazonDynamoDBClientBuilder.standard().build();
DynamoDB db = new DynamoDB(dynamoDbClient);

Table table = db.getTable("test-table");
GetItemSpec getItemSpec = new GetItemSpec().withPrimaryKey("id", "myid");
Item item = table.getItem(getItemSpec);

Set<BigDecimal> vals = item.getNumberSet("vals");

Item mynewItem =  new Item()
    .withPrimaryKey("id", "id2")
    .withNumberSet("vals", vals); // won't compile

这给了incompatible types: java.util.HashSet<java.math.BigDecimal> cannot be converted to java.util.Set<java.lang.Number>

答案

解决方法是从Set<Number>创建一个新的Set<BigDecimal>

Set<Number> vals = new HashSet<Number>(item.getNumberSet("vals")); // conversion


Item mynewItem =  new Item()
    .withPrimaryKey("id", "id2")
     .withNumberSet("vals", vals); // won't compile

以上是关于如何将DynamoDB的Item.getNumberSet()输出提供给Item.withNumberSet()?的主要内容,如果未能解决你的问题,请参考以下文章

如何将DynamoDB放入请求放入队列

如何将数据从 Glue 移动到 Dynamodb

最佳方法:如何将 dynamodb 表导出到 csv 并将其存储在 s3

如何将 DynamoDb 迁移到 RDS (Aurora)

如何从 aws 控制台将 dynamoDB 表的全部记录导出到 CSV?

如何将 DynamoDB 细粒度访问控制与 Cognito 用户池结合使用?