Amazon web services Dynamo DB:使用HashKey+删除表中的条目;范围

Amazon web services Dynamo DB:使用HashKey+删除表中的条目;范围,amazon-web-services,amazon-dynamodb,delete-operator,Amazon Web Services,Amazon Dynamodb,Delete Operator,我有一个带有Hashkey+RangeKey的DynamoDB表。删除给定HashKey和RangeKey的条目时,我面临以下错误 尝试了以下方法 使用DynamoDBMapper从数据库中获取记录(Obj),使用DynamoDBQueryExpression,该表达式在KeyCondition中同时包含HashKey和RangeKey。执行了dynamoDBMapper.delete(Obj) 请参阅其他已发布和试用的 HashMap eav=newhashmap(); eav.put(“:v

我有一个带有Hashkey+RangeKey的DynamoDB表。删除给定HashKey和RangeKey的条目时,我面临以下错误

尝试了以下方法

  • 使用DynamoDBMapper从数据库中获取记录(Obj),使用
    DynamoDBQueryExpression
    ,该表达式在KeyCondition中同时包含HashKey和RangeKey。执行了
    dynamoDBMapper.delete(Obj)
  • 请参阅其他已发布和试用的
  • HashMap eav=newhashmap();
    eav.put(“:v1”,新的AttributeValue().with(value));
    DynamoDBQueryExpression queryExpression=新建DynamoDBQueryExpression()
    .withKeyConditionExpression(“documentId=:v1”)
    .带有表达式属性值(eav);
    List ddbResults=dynamoDBMapper.query(DocumentTable.class,queryExpression);
    dynamoDBMapper.batchDelete(ddbResults);
    
    在上述两种情况下,我看到以下例外情况

    com.amazonaws.services.dynamodbv2.model.AmazonDynamoDBException: The provided key element does not match the schema (Service: AmazonDynamoDBv2; Status Code: 400; Error Code: ValidationException; Request ID: I12MUB0FSQNAQT6AH0RHE1B12JVV4KQNSO5AEMVJF66Q9ASUAAJG)
    
    • 如果有人有类似问题,请提供帮助
    • 是否不建议使用复合密钥(如HashKey和SortKey)

    您试图通过为键
    documentId
    指定一个项。错误试图告诉您
    documentId
    不是表中键的名称


    用表中键的名称替换
    documentId

    您试图通过为键
    documentId
    指定一个项。错误试图告诉您
    documentId
    不是表中键的名称


    用表中键的名称替换
    documentId

    谢谢。我找到了解决办法。虽然我不确定确切的原因,但这就是我的代码1的问题所在。我正在使用Spring-org.springframework.data.repository.crudepository 2。这迫使我使用@Id,我无法用适当的注释@DynamoDBRangeKey标记我的
    RangeKey
    。还有一篇文章讨论了这个问题-修复:停止使用crudepository,这帮助我正确标记RangeKey。使用dynamoDBMapper进行DB操作谢谢。我找到了解决办法。虽然我不确定确切的原因,但这就是我的代码1的问题所在。我正在使用Spring-org.springframework.data.repository.crudepository 2。这迫使我使用@Id,我无法用适当的注释@DynamoDBRangeKey标记我的
    RangeKey
    。还有一篇文章讨论了这个问题-修复:停止使用crudepository,这帮助我正确标记RangeKey。使用dynamoDBMapper进行数据库操作