Ich habe mit einer ConditionalCheckFailedException zu tun, und ich bin nicht genau sicher, welche Bedingung die Prüfung nicht besteht. Wenn ich den Debugger öffne und die Ausnahmevariable untersuche, kann ich keine nützlichen Informationen finden.DynamoDB: ConditionalCheckFailedException
Unten ist mein Java Dynamo Client-Code. Ich versuche, DynamoDB mit dynamoDBSaveExpression bedingte schreiben, wenn:
Das Client-Datum in der Tabelle kommt vor dem aktuellen Client-Datum, das ich versuche zu schreiben (als EPOCH Zeit gespeichert) Ein Eintrag existiert nicht in der Tabelle (Ich überprüfe für den FEEDBACK_KEY, da es der Primärschlüssel in meiner Tabelle ist) Wenn ich den ersten Eintrag in die Tabelle schreibe, funktioniert es, aber bei Updates, wenn ein Eintrag existiert, bekomme ich die ConditionalCheckFailedException Ausnahme. Irgendwelche Ideen?
final DynamoDBSaveExpression expression = new DynamoDBSaveExpression();
final Map<String, ExpectedAttributeValue> expectedAttributes =
ImmutableMap.<String, ExpectedAttributeValue>builder()
.put(ThemesMessageEligibility.TableKeys.CLIENT_DATE,
new ExpectedAttributeValue()
.withComparisonOperator(ComparisonOperator.LT)
.withValue(new AttributeValue().withN(clientDate)))
.put(ThemesMessageEligibility.TableKeys.FEEDBACK_KEY,
new ExpectedAttributeValue(false))
.build();
expression.setExpected(expectedAttributes);
expression.setConditionalOperator(ConditionalOperator.OR);
// Conditional write if the clientDate is after the dynamo's client Date
try {
dynamoMapper.save(themesFeedbackComponentContainer, expression);
} catch (ConditionalCheckFailedException ex) {
...
}