invalid keyconditionexpression attribute name is a reserved keyword

invalid keyconditionexpression attribute name is a reserved keyword

DynamoDB中保留关键字

小编在使用DynamoDB查询一个带status的数据,该status字段在DynamoDB中是保留字段,类似Mysql中的关键字,此时查询语句就会报错了。 Java中解决该问题就是使用占位符的方式,在通过withExpressionAttributeValues对其进行关联。

解决方式如下:

Map<String, AttributeValue> map = new HashMap<>();
map.put(":status", new new AttributeValue().withN(3);
        
//use the aliasMap to map the reserved field:status
Map<String, String> aliasMap = new HashMap();
aliasMap.put("#S", "status");
// #S is placehold 
DynamoDBQueryExpression<T> queryExpression = new DynamoDBQueryExpression<T>()
                .withKeyConditionExpression("#S=:status")
                .withIndexName("status-index")
                .withExpressionAttributeNames(aliasMap)
                .withExpressionAttributeValues(map)
                .withLimit(pageSize)
                .withConsistentRead(false)
                .withScanIndexForward(false);


Note:#S这是占位符,开发者自己定义,但是一定要和aliasMap的key保持一致

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值