Я пытаюсь удалить все элементы, имеющие определенное значение в качестве первичного ключа. Например: groupName - это столбец первичный ключ в DynamoDB. Существует один столбец groupVersion , который является ключом сортировки. Я хочу удалить все элементы, для которых столбец groupName имеет значение group123
Простой mysql запрос будет выглядеть так:
delete from table XYZ where groupName = 'group123';
Я попробовал приведенный ниже код, но его всегда не удается удалить с сообщением: The provided key element does not match the schema (Service: DynamoDb, Status Code: 400
Код, который я пробовал:
TableSchema<Group> TABLE_SCHEMA = StaticTableSchema.builder(Group.class)
.newItemSupplier(Group::new)
.addAttribute(String.class, a -> a.name("groupName")
.getter(schema -> schema.getGroupName())
.setter((schema, schemaName) -> {
schema.setSchemaName(schemaName);
})
.tags(primaryPartitionKey()))
.addAttribute(Long.class, a -> a.name("groupVersion")
.getter(schema -> schema.getGroupVersion())
.setter((schema, s) -> {
schema.setSchemaVersion(s);
})
.tags(primarySortKey()))
.addAttribute(String.class, a -> a.name("value")
.getter(schema -> schema.getValue())
.setter((schema, s) -> {
schema.setValue(s);
}))
.build();
Region region = Region.US_EAST_1;
DynamoDbClient ddb = DynamoDbClient.builder()
.region(region)
.enableEndpointDiscovery()
.build();
DynamoDbEnhancedClient client = DynamoDbEnhancedClient.builder()
.dynamoDbClient(ddb)
.build();
client.table(tableName, TABLE_SCHEMA).deleteItem(DeleteItemEnhancedRequest.builder()
.key(Key.builder().partitionValue("group123").build())
.build());
Использование AWS Java SDK v2. Maven версия SDK: 2.13.4