Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java DynamoDB DynamodBautoGenerateStregy.CREATE不使用DynamoDBMapperConfig.SaveBehavior.UPDATE\u SKIP\u NULL\u属性_Java_Amazon Web Services_Amazon Dynamodb - Fatal编程技术网

Java DynamoDB DynamodBautoGenerateStregy.CREATE不使用DynamoDBMapperConfig.SaveBehavior.UPDATE\u SKIP\u NULL\u属性

Java DynamoDB DynamodBautoGenerateStregy.CREATE不使用DynamoDBMapperConfig.SaveBehavior.UPDATE\u SKIP\u NULL\u属性,java,amazon-web-services,amazon-dynamodb,Java,Amazon Web Services,Amazon Dynamodb,我想使用dynamodbautogeneratestategy.CREATE将创建时间戳添加到dynamo db中的我的项目中,我的映射器使用config:DynamoDBMapperConfig.SaveBehavior.UPDATE\u SKIP\u NULL\u属性初始化,但当我在dynamo db中检查我的项目时,它不会得到更新 同样,我也有dynamodbautogeneratetegy.ALWAYS,它在创建项目时会更新,我还检查了DynamoDBAutoGenerator的aws代

我想使用dynamodbautogeneratestategy.CREATE将创建时间戳添加到dynamo db中的我的项目中,我的映射器使用config:DynamoDBMapperConfig.SaveBehavior.UPDATE\u SKIP\u NULL\u属性初始化,但当我在dynamo db中检查我的项目时,它不会得到更新

同样,我也有dynamodbautogeneratetegy.ALWAYS,它在创建项目时会更新,我还检查了DynamoDBAutoGenerator的aws代码,它提到将CREATE与dynamodbautogeneratetegy一起使用存在一些限制。ALWAYS.:

创建和上次更新的时间戳:

    @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或将其保留为默认值,并在每次更新项目时传递它,但是我不喜欢使用这种方式。有人能建议我如何使上述代码工作吗?

看看DynamoDBGenerator,如果我们坚持更新\u SKIP\u NULL\u属性,似乎不可能实现这种行为

其他选择包括:

  • A) 在创建对象时设置creationTimestamp
  • B) 在保存新对象时使用SaveExpression定义creationTimestamp的创建
将其限制为Save.behavies的子集似乎是DynamoDBMapper的缺点之一

请随时请求将其作为中的一项功能