DynamoDB DynamoDBAutoGenerateStrategy.CREATE не работает с DynamoDBMapperConfig.SaveBehavior.UPDATE_SKIP_NULL_ATTRIBUTES - PullRequest
0 голосов
/ 09 июля 2019

Я хочу добавить метку времени создания с помощью DynamoDBAutoGenerateStrategy.CREATE к моим элементам в Dynamo DB, мой преобразователь инициализируется с помощью config: DynamoDBMapperConfig.SaveBehavior.UPDATE_SKIP_NULL_ATTRIBUTES, но когда я проверяю свой элемент в Dynamo DB, он не обновляется.1001 *

Точно так же у меня также есть DynamoDBAutoGenerateStrategy.ALWAYS, который обновляется при создании элемента, я также проверил код aws для DynamoDBAutoGenerator, он упоминает о некоторых ограничениях использования CREATE с DynamoDBAutoGenerateStrategy.ALWAYS .: https://github.com/aws/aws-sdk-java/blob/master/aws-java-sdk-dynamodb/src/main/java/com/amazonaws/services/dynamodbv2/datamodeling/DynamoDBAutoGenerator.java

Создание и время последнего обновления:

    @DynamoDBAutoGeneratedTimestamp(strategy = DynamoDBAutoGenerateStrategy.CREATE)
    @DynamoDBTypeConvertedTimestamp
    private Long creationTimestamp;

    @DynamoDBAutoGeneratedTimestamp(strategy = DynamoDBAutoGenerateStrategy.ALWAYS)
    @DynamoDBTypeConvertedTimestamp
    private Long lastUpdatedTimestamp;

Инициализация картографа:

@Provides
    @Singleton
    @Inject
    public DynamoDbClient dynamoDbClientWithMapper(
            @Named("standardAwsCred") AWSCredentialsProvider awsCredentials,
            @Named("dynamodb.realm") String region) {
        final DynamoDBMapperConfig.Builder configBuilder = new DynamoDBMapperConfig.Builder();
        configBuilder.setSaveBehavior(DynamoDBMapperConfig.SaveBehavior.UPDATE_SKIP_NULL_ATTRIBUTES);
        DynamoDBMapperConfig dynamoDBMapperConfig = configBuilder.build();
        DynamoDBMapper dynamoDBMapper = new DynamoDBMapper(AmazonDynamoDBClientBuilder.standard()
                .withCredentials(awsCredentials)
                .withRegion(region)
                .build(), dynamoDBMapperConfig);
        return new DynamoDbClient(dynamoDBMapper);
    }

Как я могу заставить это работать?У меня есть решение, которое заключается в том, чтобы не иметь DynamoDBMapperConfig или оставить его по умолчанию при создании Mapper и передавать его каждый раз, когда мне нужно обновить элемент, но я не предпочитаю использовать этот способ, может кто-нибудь подсказать, как можно заставить работать приведенный выше код?

1 Ответ

0 голосов
/ 24 июля 2019

Глядя на DynamoDBGenerator, кажется, что получить такое поведение невозможно, если мы будем придерживаться UPDATE_SKIP_NULL_ATTRIBUTES

Другие опции:

Кажется, одним из недостатков DynamoDBMapper является ограничение его подмножеством Save.Behaviors

Пожалуйста, не стесняйтесь запросить его в качестве функции в https://github.com/aws/aws-sdk-java-v2/issues/35

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...