ValidationException при сохранении в DynamoDB с помощью картографа ⇐ JAVA
ValidationException при сохранении в DynamoDB с помощью картографа
У меня возникла эта ошибка при сохранении нового элемента (WCode) в экземпляр DynamoDB с помощью DynamoDBMapper:
Исключение в потоке «Thread-1» com.amazonaws.AmazonServiceException: предоставленный ключевой элемент не соответствует схеме (Сервис: AmazonDynamoDBv2; код состояния: 400; код ошибки: ValidationException; идентификатор запроса: 4OOMKU7NS1VD19EN988SUUM3U7VV4KQNSO5AEMVJF66Q9ASUAAJG) на com.amazonaws.http.AmazonHttpClient.handleErrorResponse(AmazonHttpClient.java:1369) на com.amazonaws.http.AmazonHttpClient.executeOneRequest(AmazonHttpClient.java:913) на com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:631) на com.amazonaws.http.AmazonHttpClient.doExecute(AmazonHttpClient.java:400) на com.amazonaws.http.AmazonHttpClient.executeWithTimer(AmazonHttpClient.java:362) на com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:311) на com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient.invoke(AmazonDynamoDBClient.java:1966) на com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient.updateItem(AmazonDynamoDBClient.java:1780) на com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapper$SaveObjectHandler.doUpdateItem(DynamoDBMapper.java:1110) по адресу com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapper$2.executeLowLevelRequest(DynamoDBMapper.java:806) по адресу com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapper $SaveObjectHandler.execute(DynamoDBMapper.java:989) на com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapper.save(DynamoDBMapper.java:835) на com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapper.save(DynamoDBMapper.java:669) в com.wkt.cdmng.MessageAnalyzer.storeCode(MessageAnalyzer.java:220) в com.wkt.cdmng.MessageAnalyzer.run(MessageAnalyzer.java:156) в java.lang.Thread.run(Thread.java:745) Я думаю, это что-то связано с ключевыми атрибутами класса WCode, но я не могу понять, какой из них и как искать дополнительную информацию.
Ниже приведен класс модели WCode, и все имена атрибутов указаны правильно:
import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBAttribute; импортировать com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBHashKey; импортировать com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBIndexHashKey; импортировать com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBTable; импортировать java.util.Date; @DynamoDBTable(tableName = "CODES_DEV") общественный класс WCode { частный строковый идентификатор; частный строковый код; дополнительная частная строка; @DynamoDBHashKey(attributeName = "ID") общественная строка getId() {возвращаемый идентификатор;} public void setId (строковый код) {id = "0 |" + код + "|" + String.valueOf(новая дата().getTime());} @DynamoDBIndexHashKey(globalSecondaryIndexName = «CD-индекс», имя атрибута = «CD») public String getCode() {код возврата;} public void setCode (String code) {this.code = code;} @DynamoDBAttribute(attributeName = "EX") public String getExtra() {возвращает дополнительно;} public void setExtra(String extra) {this.extra = extra;} } Это метод, который я использую для хранения элемента (storeCode):
private void storeCode(String code) { DynamoDBMapper Mapper = awsDynamo.getMapper(); // одноэлементный класс, который я использую для подключения к DynamoDB WCode tmpCode = новый WCode(); tmpCode.setId(код); tmpCode.setCode(код); tmpCode.setExtra(""); Mapper.save(tmpCode); } Я использую aws-java-sdk-dynamodb и aws-java-sdk-sqs (последний для другой части проекта) версии 1.10.58.
Может ли кто-нибудь указать мне на возможное решение или предложение?
Большое спасибо!
У меня возникла эта ошибка при сохранении нового элемента (WCode) в экземпляр DynamoDB с помощью DynamoDBMapper:
Исключение в потоке «Thread-1» com.amazonaws.AmazonServiceException: предоставленный ключевой элемент не соответствует схеме (Сервис: AmazonDynamoDBv2; код состояния: 400; код ошибки: ValidationException; идентификатор запроса: 4OOMKU7NS1VD19EN988SUUM3U7VV4KQNSO5AEMVJF66Q9ASUAAJG) на com.amazonaws.http.AmazonHttpClient.handleErrorResponse(AmazonHttpClient.java:1369) на com.amazonaws.http.AmazonHttpClient.executeOneRequest(AmazonHttpClient.java:913) на com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:631) на com.amazonaws.http.AmazonHttpClient.doExecute(AmazonHttpClient.java:400) на com.amazonaws.http.AmazonHttpClient.executeWithTimer(AmazonHttpClient.java:362) на com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:311) на com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient.invoke(AmazonDynamoDBClient.java:1966) на com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient.updateItem(AmazonDynamoDBClient.java:1780) на com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapper$SaveObjectHandler.doUpdateItem(DynamoDBMapper.java:1110) по адресу com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapper$2.executeLowLevelRequest(DynamoDBMapper.java:806) по адресу com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapper $SaveObjectHandler.execute(DynamoDBMapper.java:989) на com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapper.save(DynamoDBMapper.java:835) на com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapper.save(DynamoDBMapper.java:669) в com.wkt.cdmng.MessageAnalyzer.storeCode(MessageAnalyzer.java:220) в com.wkt.cdmng.MessageAnalyzer.run(MessageAnalyzer.java:156) в java.lang.Thread.run(Thread.java:745) Я думаю, это что-то связано с ключевыми атрибутами класса WCode, но я не могу понять, какой из них и как искать дополнительную информацию.
Ниже приведен класс модели WCode, и все имена атрибутов указаны правильно:
import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBAttribute; импортировать com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBHashKey; импортировать com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBIndexHashKey; импортировать com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBTable; импортировать java.util.Date; @DynamoDBTable(tableName = "CODES_DEV") общественный класс WCode { частный строковый идентификатор; частный строковый код; дополнительная частная строка; @DynamoDBHashKey(attributeName = "ID") общественная строка getId() {возвращаемый идентификатор;} public void setId (строковый код) {id = "0 |" + код + "|" + String.valueOf(новая дата().getTime());} @DynamoDBIndexHashKey(globalSecondaryIndexName = «CD-индекс», имя атрибута = «CD») public String getCode() {код возврата;} public void setCode (String code) {this.code = code;} @DynamoDBAttribute(attributeName = "EX") public String getExtra() {возвращает дополнительно;} public void setExtra(String extra) {this.extra = extra;} } Это метод, который я использую для хранения элемента (storeCode):
private void storeCode(String code) { DynamoDBMapper Mapper = awsDynamo.getMapper(); // одноэлементный класс, который я использую для подключения к DynamoDB WCode tmpCode = новый WCode(); tmpCode.setId(код); tmpCode.setCode(код); tmpCode.setExtra(""); Mapper.save(tmpCode); } Я использую aws-java-sdk-dynamodb и aws-java-sdk-sqs (последний для другой части проекта) версии 1.10.58.
Может ли кто-нибудь указать мне на возможное решение или предложение?
Большое спасибо!
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Проблема с запросом DELETE в API Node.js/DynamoDB — ValidationException
Anonymous » » в форуме Javascript - 0 Ответы
- 13 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Невозможно подключиться к AWS dynamodb с помощью laravel с помощью kitar/laravel-dynamodb
Anonymous » » в форуме Php - 0 Ответы
- 39 Просмотры
-
Последнее сообщение Anonymous
-