Геттер используется для добавления значения в DynamoDB - PullRequest
0 голосов
/ 14 апреля 2020

У меня есть атрибут с именем Attribute, который установлен в DynamoDB (не обязательно), все значения для атрибутов будут отправлены через 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 есть ОБНОВЛЕНИЕ по умолчанию, но я вижу, что при сохранении нового значения все поведение при сохранении работает одинаково.

Если кто-нибудь знает проблему, пожалуйста, помогите мне с этим, я был пытаясь отладить это из долгого времени. Я хочу знать, почему значение в getAttribute хранится как значение атрибута?

1 Ответ

0 голосов
/ 15 апреля 2020

Попробуйте вместо этого:

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

...