我有一个名为 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/