gpt4 book ai didi

java - 在 Java 中使用 DynamoDB 的 PutItem ConditionExpression(避免替换属性)

转载 作者:太空宇宙 更新时间:2023-11-04 14:24:56 28 4
gpt4 key购买 nike

我有一个不包含任何唯一键(主键)的数据集。只有当所有行组合在一起时,它才是唯一的。但是,我在 dynamoDB 中创建表的键中给出了第一个属性(类类型),如下所示:

    CreateTableRequest createTableRequest = new CreateTableRequest()
.withTableName(tableName)
.withKeySchema(newKeySchemaElement()
.withAttributeName("Class type")
.withKeyType(KeyType.HASH))
.withAttributeDefinitions(newAttributeDefinition().withAttributeName("Class type").withAttributeType(ScalarAttributeType.S))
...
...;

对于此数据集,PutItem 不起作用,因为它会用另一个属性替换一个属性,因为“类类型”不是唯一的。我希望将所有行上传到 dynamoDB。我的 putItem 如下所示:

Map<String, AttributeValue> item = newItem(col[0], col[1], col[2], col[3], titanic_col[4]);
PutItemRequest putItemRequest = new PutItemRequest(tableName, item).withConditionExpression("Class type = NULL");
// No error in the above line. But getting exception.
PutItemResult putItemResult = dynamoDB.putItem(putItemRequest);

我在条件表达式行中遇到的异常:

Caught an AmazonServiceException, which means your request made it to AWS, but was rejected with an error response for some reason.
Error Message: Invalid ConditionExpression: Syntax error; token: "type", near: "Class type =" (Service: AmazonDynamoDBv2; Status Code: 400; Error Code: ValidationException; Request ID: J51GM61PM4AE2HPD0DVMQ6TNU7VV4KQNSO5AEMVJF66Q9ASUAAJG)
HTTP Status Code: 400
AWS Error Code: ValidationException
Error Type: Client

我想知道语法是否正确。如果不是,请提供正确的语法来解决问题(避免替换属性)。

最佳答案

  1. 是的,存在语法错误。 “类类型”两个词之间有一个空格。解析器不知道这一点,除非你告诉它。要让解析知道“类类型”是单个属性,请参阅 expression attribute name
  2. 您需要一个唯一的 ID,即使是 uuid 也可以

关于java - 在 Java 中使用 DynamoDB 的 PutItem ConditionExpression(避免替换属性),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26786262/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com