如果属性不等于 DynamoDBMapper,则有条件写入项目

aoa*_*oak 3 java amazon-web-services amazon-dynamodb

当您想要以下条件时,是否可以使用 DynamoDB 映射器进行条件写入/更新:如果属性不等于 X,则写入?我想做一个有条件的写,做这样的事情:

DynamoRecord record = mapper.load(DynamoRecord.class, hashKey);
if (record.getSomeAttr() != terminationValue) {
    mapper.save(newRecord);
}
Run Code Online (Sandbox Code Playgroud)

该属性始终存在。它可以有多个值并代表一个条件,在该条件之后对记录的更新应该停止。

我阅读了这篇文章AWS 文档以及一堆其他帖子,但似乎只==支持运算符和存在检查。是否可以!=使用映射器进行条件写入?如果是这样,非常感谢任何指针。

谢谢。

@notionquest 的回答摘要

  1. ComparisonOperator.NE
  2. 如果该属性是布尔值,请在使用时对其进行注释以@DynamoDBNativeBoolean获得正确的结果ExpectedAttributeValue(new AttributeValue().withBool(true))。有关详细信息,请参见此处

not*_*est 5

请使用“withComparisonOperator(ComparisonOperator.NE)”作为NOTEQUALS 条件。请参考以下示例。

DynamoDBSaveExpression saveExpression = new DynamoDBSaveExpression();
       Map expected = new HashMap();
       expected.put("Status", 
          new ExpectedAttributeValue(new AttributeValue(status)).withComparisonOperator(ComparisonOperator.NE));
saveExpression.setExpected(expected);
dynamoDBMapper.save(obj, saveExpression);
Run Code Online (Sandbox Code Playgroud)