2017-06-24 27 views
0

私はdynamoDBのbatchLoad関数を使用していました。ここで、関数のdocumentation は、入力にはList<KeyPair>が入力されています。しかし、KeyPairオブジェクトを使用すると、引数がdynamodb annotated classであるというエラーがスローされます。DynamoDB Mapper "batchLoad()"入力

DynamoDBクラスを使用できます。ここでは、クラスの属性をhashKey and rangeKeyに設定し、それらを引数として渡します。しかし、私の使用例はClass(DynamoDB annotated)です。使用するフィールドは@NonNullです。私がこのために引数を渡さなければならない場合、私はそれらに迷惑な値を設定しなければなりません。それは明らかに望ましくありません。どんな種類の助言/提案ですか? ありがとう!

答えて

1

ここに実際の例があります。

概要: -

  • Modelクラス - あなたがモデルクラスで

を取得したいキーのペアのリスト - 地図

  • keyPairListのキーでなければなりません。 -

    Map<Class<?>, List<KeyPair>> keyPairForTable = new HashMap<>(); 
          keyPairForTable.put(Movies.class, keyPairList); 
    

    全コード: -

    public Boolean batchLoadMoviesUsingKeyPair() { 
    
        DynamoDBMapper dynamoDBMapper = new DynamoDBMapper(dynamoDBClient); 
    
        KeyPair keyPair1 = new KeyPair(); 
        keyPair1.withHashKey(1991); 
        keyPair1.withRangeKey("Movie with map attribute"); 
    
        KeyPair keyPair2 = new KeyPair(); 
        keyPair2.withHashKey(2010); 
        keyPair2.withRangeKey("The Big New Movie 2010"); 
    
        List<KeyPair> keyPairList = new ArrayList<>(); 
        keyPairList.add(keyPair1); 
        keyPairList.add(keyPair2); 
    
        Map<Class<?>, List<KeyPair>> keyPairForTable = new HashMap<>(); 
        keyPairForTable.put(Movies.class, keyPairList); 
    
        Map<String, List<Object>> batchResults = dynamoDBMapper.batchLoad(keyPairForTable); 
    
        for (Map.Entry<String, List<Object>> entry : batchResults.entrySet()) { 
         System.out.println(entry.getKey()); 
         System.out.println(entry.getValue()); 
        } 
    
        return true; 
    
    } 
    
  • +0

    どうもありがとう!私はすでにわかっていました、私の悪い、私は 'public Map > batchLoad(Iterable <?extends Object> itemsToGet、DynamoDBMapperConfig config)'を使っていました。しかし、あなたが助けてくれたからと言って、それは正しいアプローチです! – Arushi

    +0

    良いとありがとう! – notionquest

    関連する問題