java - 仅当 HashKey RangeKey 对在表中时,DynamoDB 映射器才更新项目
问题描述
我想为我的 DynamoDB 表设计一个更新函数,仅当哈希键和范围键对位于 DynamoDB 表中时才更新记录。如果该项目不存在,我想抛出一个 badRequestError。如何使用 DynamoDB 表达式来实现这一点?我可以将 expectedAttributetrue
设置为并将条件运算符设置为AND
吗?
解决方案
如果您正在使用DynamoDBMapper
,您可以使用DynamoDBSaveExpression
就像是:
Map<String, ExpectedAttributeValue> expected =
Map.of("hashKeyAttrName", new ExpectedAttributeValue().withExists(true),
"rangeKeyAttrName", new ExpectedAttributeValue().withExists(true));
DynamoDBSaveExpression expression = new DynamoDBSaveExpression();
expression.setExpected(expected);
dynamoDBMapper.save(item, expression);
如果条件不满足save
将抛出一个ConditionalCheckFailedException
推荐阅读
- linux - 对等点重置连接后 Wget 不重试
- active-directory - OfficeJs SSO getAccessTokenAsync 返回错误代码 3000,访问被拒绝
- android - 跟踪播放 Instream FAN 视频广告的进度
- email - 向 Jenkins localhost 发送电子邮件的问题
- javascript - 使用 ember-intl 异步加载翻译
- symfony - Symfony 4 Voters - 角色和权限问题
- node.js - 配置 Node.js 应用程序以使用 TCP 上的 Websockets 以及 AWS S3
- javascript - 复杂的 Promise 和 for 循环
- javascript - 事件下拉菜单不适用于 safari 中的图标
- sql-server - 将 sql 输出存储在 vba 变量中