如何将DynamoDB的Item.getNumberSet()输出提供给Item.withNumberSet()?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将DynamoDB的Item.getNumberSet()输出提供给Item.withNumberSet()?相关的知识,希望对你有一定的参考价值。
我有一个包含数字集(NS)属性的Item
。 getNumberSet(String attrName)
将返回Set<BigDecimal>
。
我的意图是采取该NumberSet并将其存储在另一个Item
但withNumberSet(String attrName, Set<Number> vals)
将不接受Set<BigDecimal>
作为输入,虽然BigDecimal
是Number
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 表导出到 csv 并将其存储在 s3