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