Есть ли способ обновить вложенный атрибут в DynamoDB с помощью DynamoDB Mapper

#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.?

Любая помощь будет оценена.