1

「カウント」数値フィールドを持つ DynamoDB テーブルがあります。AttributeAction.ADD を使用してフィールドをインクリメントしています。動作しますが、アプリを再実行すると、既存の値がインクリメントされず、代わりに「1」から再び開始されます。

私は期待しています:

run #1: 1,2,3,4,5
run #2: 6,7,8,9,10

代わりに私は見ています:

run #1: 1,2,3,4,5
run #2: 1,2,3,4,5

私は何を間違っていますか?アプリで実行しているコードは次のとおりです。

        Map<String, AttributeValueUpdate> updateItems = new HashMap<String, AttributeValueUpdate>();

        Key key = new Key().withHashKeyElement(new AttributeValue().withS(targetKey));
        updateItems.put("count",
                new AttributeValueUpdate()
                        .withAction(AttributeAction.ADD)
                        .withValue(new AttributeValue().withN("1")));

        ReturnValue returnValues = ReturnValue.ALL_NEW;

        UpdateItemRequest updateItemRequest = new UpdateItemRequest()
                .withTableName(tableName)
                .withKey(key)
                .withAttributeUpdates(updateItems)
                .withReturnValues(returnValues);


        UpdateItemResult result = dynamoDB.updateItem(updateItemRequest);
4

1 に答える 1

0

コードは正常に動作します。問題なく別のアプリでテストしました。今日、最初のアプリを再実行したところ、再び正常に機能しました。これは共有 jar に存在するため、コードの変更はありません。最初の実行で最初に作成されたテーブルに問題があったと思います。テーブル作成コードが同じ jar 内にあり、変更されていないため、何がわかりません。

于 2013-03-13T19:50:08.787 に答える