DynamoDBMapper for conditional saves(用于条件保存的 DynamoDBMapper)
问题描述
我正在使用 DynamoDBMapper,并且希望有条件地保存当且仅当 hashkey 和 range 键组合不存在时.我知道有一些方法可以使用 UUID 来减少发生冲突的可能性,但我想通过使用条件保存来保护自己.
I'm using DynamoDBMapper and would like to conditionally save if and only if the hashkey and range key combination does not exist. I know there are ways to use UUIDs to reduce the possibility of a collision but I would like to protect myself by using conditional saves.
我遇到了这篇文章 使用 DynamoDBSaveExpression 但是我无法指定条件是hashkey AND rangekey"不能存在.API 指定withConditionalOperator 方法,但我在课堂上看不到这个.我也在使用来自 here 的最新 aws java sdk.
I came across this article that uses DynamoDBSaveExpression however I'm not able to specify that the condition is "hashkey AND rangekey" cannot exist. The API specifies a withConditionalOperator method but I'm not able to see this in my class. I am using the latest aws java sdk also from here.
关于如何有条件地保存的任何建议?或者我可能做错了什么?
Any suggestions on how to conditionally save? Or what I may be doing incorrectly?
推荐答案
DynamoDBSaveExpression saveExpression = new DynamoDBSaveExpression();
Map<String, ExpectedAttributeValue> expectedAttributes =
ImmutableMap.<String, ExpectedAttributeValue>builder()
.put("hashKey", new ExpectedAttributeValue(false))
.put("rangeKey", new ExpectedAttributeValue(false))
.build();
saveExpression.setExpected(expectedAttributes);
saveExpression.setConditionalOperator(ConditionalOperator.AND);
try {
dynamoDBMapper.save(objectToSave, saveExpression);
} catch (ConditionalCheckFailedException e) {
//Handle conditional check
}
这使用 public ExpectedAttributeValue(Boolean exists) 构造函数,它只是在内部调用 setExists.
This uses the public ExpectedAttributeValue(Boolean exists) constructor, which just internally calls setExists.
这篇关于用于条件保存的 DynamoDBMapper的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:用于条件保存的 DynamoDBMapper
基础教程推荐
- JPA惰性列表上的流 2022-01-01
- doFilter()是在servlet的工作完成之前还是之后执行的? 2022-01-01
- 将 Windows 证书导入 Java 2022-01-01
- 在springboot中如何给mybatis加拦截器 2023-04-29
- Maven:无效的目标版本:10 2022-01-01
- 在java中使用xpath和selenium解析HTML表格数据 2022-01-01
- Java ECDSAwithSHA256 签名长度不一致 2022-01-01
- 如何在相机中应用自定义滤镜 [Surfaceview 预览]. 2022-01-01
- 控制台应用程序中的 Java 键盘输入解析 2022-01-01
- 将 double 转换为 Int,向下舍入 2022-01-01
