DynamoDBMapper
kullanarak bir DynamoDB örneğine yeni bir madde (WCode
) tasarruf ederken bu hatayı var:ValidationException ederken Haritacıyla DynamoDB tasarruf
Exception in thread "Thread-1" com.amazonaws.AmazonServiceException: The provided key element does not match the schema (Service: AmazonDynamoDBv2; Status Code: 400; Error Code: ValidationException; Request ID: 4OOMKU7NS1VD19EN988SUUM3U7VV4KQNSO5AEMVJF66Q9ASUAAJG)
at com.amazonaws.http.AmazonHttpClient.handleErrorResponse(AmazonHttpClient.java:1369)
at com.amazonaws.http.AmazonHttpClient.executeOneRequest(AmazonHttpClient.java:913)
at com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:631)
at com.amazonaws.http.AmazonHttpClient.doExecute(AmazonHttpClient.java:400)
at com.amazonaws.http.AmazonHttpClient.executeWithTimer(AmazonHttpClient.java:362)
at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:311)
at com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient.invoke(AmazonDynamoDBClient.java:1966)
at com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient.updateItem(AmazonDynamoDBClient.java:1780)
at com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapper$SaveObjectHandler.doUpdateItem(DynamoDBMapper.java:1110)
at com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapper$2.executeLowLevelRequest(DynamoDBMapper.java:806)
at com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapper$SaveObjectHandler.execute(DynamoDBMapper.java:989)
at com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapper.save(DynamoDBMapper.java:835)
at com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapper.save(DynamoDBMapper.java:669)
at com.wkt.cdmng.MessageAnalyzer.storeCode(MessageAnalyzer.java:220)
at com.wkt.cdmng.MessageAnalyzer.run(MessageAnalyzer.java:156)
at java.lang.Thread.run(Thread.java:745)
ben misafir o WCode
sınıfına temel özelliklerle ilgili bir şey ama hangisinin ve ek ayrıntılar sorununu nasıl arayacağımı gerçekten anlayamıyorum. Ben
private void storeCode(String code) {
DynamoDBMapper mapper = awsDynamo.getMapper(); // singleton class I use to connect to DynamoDB
WCode tmpCode = new WCode();
tmpCode.setId(code);
tmpCode.setCode(code);
tmpCode.setExtra("");
mapper.save(tmpCode);
}
:
import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBAttribute;
import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBHashKey;
import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBIndexHashKey;
import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBTable;
import java.util.Date;
@DynamoDBTable(tableName = "CODES_DEV")
public class WCode {
private String id;
private String code;
private String extra;
@DynamoDBHashKey(attributeName = "ID")
public String getId() {return id;}
public void setId(String code) {id = "0|" + code + "|" + String.valueOf(new Date().getTime());}
@DynamoDBIndexHashKey(globalSecondaryIndexName = "CD-index", attributeName = "CD")
public String getCode() {return code;}
public void setCode(String code) {this.code = code;}
@DynamoDBAttribute(attributeName = "EX")
public String getExtra() {return extra;}
public void setExtra(String extra) {this.extra = extra;}
}
Bu benim öğeyi (storeCode
) depolamak için kullanın yöntemdir:
aşağıdaki WCode
model sınıf ve tüm nitelikleri adlarının doğru bildirilmektedir olduğunu aws-java-sdk-dynamodb
ve aws-java-sdk-sqs
(projenin başka bir kısmı için ikinci) sürüm 1.10.58
kullanarak m.
Birisi beni olası bir çözüm veya öneriye yönlendirebilir mi?
Çok teşekkür ederim!
Eğer çenesinde sizin dynamodb içinde keynamens ile WCode sınıfının keynames benim için iş karşılaştırıldı mı oluyor
kaydetmek kullanarak çözdüğünüz ? Hatırladığım kadarıyla büyük/küçük harfe duyarlı –
Haklısınız; Ben yaptım, düzeltilmiş görünüyorlar. – Marco
Şimdi çalışıyor mu? –