#java #amazon-web-services #amazon-dynamodb #dynamodb-mapper
#java #amazon-веб-сервисы #amazon-dynamodb #dynamodb-mapper
Вопрос:
У меня есть схема DynamoDB с вложенными атрибутами. Следовательно, допустим, ниже приведена моя структура mapper.
public class Test
{
@DynamoDBHashKey private String testPk;
@DynamoDBRangeKey private String testSk;
@DynamoDBAttribute private String name;
@DynamoDBAttribute private MyClass myClass;
}
@DynamoDBDocument
public class MyClass{
@DynamoDBAttribute private String myName;
@DynamoDBAttribute private String mySubject;
}
Теперь это приведет к схеме, подобной:
{
"testPk":<value>,
"testSk":<value,
"name":<value>,
"myClass":{
"myName":<value>,
"mySubject":<value>
}
}
Я использую Dynamo DB Mapper для обновления этого объекта. Конфигурация dynamo DB Mapper выглядит следующим образом:
DynamoDBMapperConfig.builder() .withSaveBehavior(DynamoDBMapperConfig.SaveBehavior.UPDATE_SKIP_NULL_ATTRIBUTES) .withConsistentReads(DynamoDBMapperConfig.ConsistentReads.EVENTUAL) .build();
Это делается для того, чтобы поля, которые имеют значение null / не обновлены, игнорировались операцией сохранения.
Однако, по моим наблюдениям, эта конфигурация работает только для примитивных типов данных в классе «Test», а не для пользовательского DynamoDBDocument (MyClass), определенного в mapper (Test.java ). Всякий раз, когда я пытаюсь обновить объект MyClass, если я пытаюсь изменить только «myName», «mySubject» получает значение null, которое переопределяет его более старое значение, что означает, что «update_skip_null_attributes» не работает с DynamoDBDocument.
Как я могу изменить это поведение обновления для вложенного json.?
Любая помощь будет оценена.