java - Getter 用于在 dynamoDB 中增值

标签 java set amazon-dynamodb crud getter-setter

我有一个名为 Attribute 的属性,它在 dynamoDB 中设置(非强制),该属性的所有值都将通过 api 发送,该 api 将添加到 dynamoDB 中。我正在使用

@DynamoDBAttribute(attributename = Attribute)
private set<String> Attribute

public Set<String> getAttribute() {
     if(CollectionUtils.isNullOrEmpty(Attribute)) {
         return ImmutableSet.of(DEFAULT_ATTRIBUTE);
     } else {
         return ImmutableSet.copyOf(Attribute);
     }
}

public void setAttribute(final Set<String> Attribute) {
    if (CollectionUtils.isNullOrEmpty(Attribute)) {
        this.categories = ImmutableSet.of();
    } else {
        this.categories = ImmutableSet.copyOf(Attribute);
    }
}

当我们没有在我们使用的请求中传递属性值时,我期望我的 dynamoDB 表有一个空集,但相反,它将 DEFAULT_ATTRIBUTE 保存为字段属性的值。

我的 DynamoDBMapperConfig.Savebehavior 具有默认 UPDATE,但我发现在保存新值时,所有 Savebehavior 的工作原理都是相同的。

如果有人知道这个问题,请帮助我解决这个问题,我很长时间以来一直在尝试调试这个问题。我想知道为什么 getAttribute 中的值被存储为属性值?

最佳答案

试试这个:

private set<String> Attribute

@DynamoDBTyped(DynamoDBMapperFieldModel.DynamoDBAttributeType.SS)
public Set<String> getAttribute() {
     return Attribute;
}

public void setAttribute(final Set<String> Attribute) {
    this.Attribute = Attribute;
}

DynamoDBMapper 将为您处理字符串集。您只需要使用正确的注释即可。 https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DynamoDBMapper.DataTypes.html

关于java - Getter 用于在 dynamoDB 中增值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61199728/

相关文章:

java - 从数组设置类属性

mysql - 在距离连接字符串开头 3 个字符处插入字符串

python-3.x - DynamoDB 扫描未返回所需的输出

python - 如何使用 ConditionExpression 检查非键属性是否已存在于 dynamodb 中?

java - 使用 JPA 选择非实体?

java - 同一个 tomcat 实例上的多个 Web 应用程序是好是坏?

mysql - 如何在 MySQL 中连接一组结果?

java - DynamoDB 中不区分大小写的查询

java - 为什么这个循环排序实现有一个错误?

C++ 在 std::map<> 中使用 std::set<>