Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/369.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时发生ConditionalCheckFailed异常_Java_Amazon Dynamodb_Aws Sdk - Fatal编程技术网

使用java将项存储到DynamoDB时发生ConditionalCheckFailed异常

使用java将项存储到DynamoDB时发生ConditionalCheckFailed异常,java,amazon-dynamodb,aws-sdk,Java,Amazon Dynamodb,Aws Sdk,我正在使用DynamoDBMapper将一个项目保存到DynamoDB中,没有任何条件/表达式集。但每次保存对象时,我都会遇到ConditionalCheckFailed异常。请参阅下面的代码 注意:我在5个线程下运行此代码 主类 UserDocument.java DynamoDB启用乐观锁定策略,以确保您正在更新(或删除)的客户端项与DynamoDB中的项相同。注释@DynamoDBVersionAttribute用于此 第一次-保存应成功 第二次-您需要在调用save时提供版本。例如:-

我正在使用DynamoDBMapper将一个项目保存到DynamoDB中,没有任何条件/表达式集。但每次保存对象时,我都会遇到ConditionalCheckFailed异常。请参阅下面的代码

注意:我在5个线程下运行此代码

主类 UserDocument.java
DynamoDB启用乐观锁定策略,以确保您正在更新(或删除)的客户端项与DynamoDB中的项相同。注释
@DynamoDBVersionAttribute
用于此

第一次-保存应成功

第二次-您需要在调用save时提供版本。例如:-

userDocument.setVersion(1L);
@DynamoDBVersionAttribute

为了支持乐观锁定,AWS SDK for Java提供 @DynamoDBVersionAttribute注释。在映射类中为您的 表中,指定一个属性来存储版本号,以及 使用此注释对其进行标记。保存对象时 DynamoDB表中的相应项将具有 存储版本号

关闭乐观锁定:-

将SaveBehavior设置为CLOBBER

DynamoDBMapperConfig config = new DynamoDBMapperConfig(new DynamoDBMapperConfig(
                DynamoDBMapperConfig.SaveBehavior.CLOBBER),             
                new DynamoDBMapperConfig(TableNameOverride.withTableNameReplacement("userdocument")));
要禁用乐观锁定,可以更改 DynamoDBMapperConfig.SaveBehavior枚举值从更新到 重击。您可以通过创建DynamoDBMapperConfig实例来实现这一点 这将跳过版本检查,并将此实例用于所有 请求


您能显示您分配给该对象的testclass代码和值吗?您好,添加了我的测试类“UserDocument”和分配给它的值。
userDocument.setVersion(1L);
DynamoDBMapperConfig config = new DynamoDBMapperConfig(new DynamoDBMapperConfig(
                DynamoDBMapperConfig.SaveBehavior.CLOBBER),             
                new DynamoDBMapperConfig(TableNameOverride.withTableNameReplacement("userdocument")));