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

问题描述 投票:0回答:1

我有一个包含数字集(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>

java amazon-dynamodb aws-sdk
1个回答
0
投票

解决方法是从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
© www.soinside.com 2019 - 2024. All rights reserved.