java sdkを使用してDynamoDBのDynamoDBSaveExpressionを使用しようとしています。私は次の2つのシナリオをエミュレートしようとしている位置にいるDynamoDBの式 - 複数のExpectedAttributeValuesの比較
:
1)項目がテーブルに存在する場合は、保存表現の制限DATE1、DATE2、およびDATE3(以下のコードを参照)を強制するには。
2)アイテムがテーブルに存在しない場合は、挿入してください。ここで
は、これまでの私のコードです:
ExpectedAttributeValue date1 = new ExpectedAttributeValue()
.withComparisonOperator(ComparisonOperator.LE)
.withValue(new AttributeValue().withN(Long.toString(tr.date1().getTime())));
ExpectedAttributeValue date2 = new ExpectedAttributeValue()
.withComparisonOperator(ComparisonOperator.LE)
.withValue(new AttributeValue().withN(Long.toString(tr.date2().getTime())));
ExpectedAttributeValue date3 = new ExpectedAttributeValue()
.withComparisonOperator(ComparisonOperator.LE)
.withValue(new AttributeValue().withN(Long.toString(tr.date3().getTime())));
DynamoDBSaveExpression saveExpression = new DynamoDBSaveExpression();
Map<String, ExpectedAttributeValue> expectedAtributes =
ImmutableMap.<String, ExpectedAttributeValue>builder()
.put("date1", date1)
.put("date2", date2)
.put("date3", date3)
.build();
saveExpression.setExpected(expectedAtributes);
saveExpression.setConditionalOperator(ConditionalOperator.AND);
私は両方のシナリオをキャプチャするために保存式を使用する方法がわからないと思います。私は動的に個別の保存式を渡すことができますが、そうすることでクライアントが望ましくない重要なリファクタリングが行われることを認識しています。