2017-04-04 8 views
1

を返すことができますどのように私は、DynamoDBのテーブルのために取得しようとしていますし、私はエラーを取得しています:- マーシャルがint

com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMappingException: 
Expected S in value {N: 0,} when invoking public void 
com.genieo.installer.data.MacClient.setGuardActivityCounter(int)"]} 

私はDynamoDBMarshaller実装を使用する必要があることを理解。

私はこのようにそれを試してみました:

public static class GuardActivityCounterDynamoDBMarshaller implements DynamoDBMarshaller<Integer> 
{ 

    @Override 
    public int marshall(Integer getterReturnResult) { 
     return 0; 
    } 

    @Override 
    public Integer unmarshall(Class<Integer> clazz, String obj) { 
     return 0; 
    } 

} 

残念ながらマーシャル関数はint型を返すことができません。

誰かが私を助けてくださいことができれば、私は大好きです。私が正しくあなたの質問を理解している場合、事前に

おかげ

ギャル

答えて

0

は、あなたはStringデータ型でDynamoDBの上の属性を格納しています。あなたはマッパーから値を返すときしかし、あなたは整数(つまりJavaプリミティブint型)としてそれを返すようにしたいと思います。

これは例です。

この属性は、モデルにintと定義されています。

private int postCounter; 

@DynamoDBTyped(DynamoDBAttributeType.S) 
@DynamoDBAttribute(attributeName = "postCounter") 
public int getPostCounter() { 
    return postCounter; 
} 

postCounter属性がDynamoDBのテーブルに文字列として格納されます -

は、下のスクリーンショットを参照してください。

しかし、マッパーは、属性を整数として扱います。注釈@DynamoDBTypedはDynamoDBのデータ型を示すのではなくJavaデータ型に基づいて自動的に解釈するために使用されます。

enter image description here

関連する問題