Ich versuche, Daten in DynamoDb zu speichern, aber diese Daten enthalten auch einige Map-Attribute. Aber ich erhalte Fehler beim Speichern dieser Daten. Folgende ist meine Domain-Klasse, die ich für das Speichern von Daten aus Anfrage bin mit:DynamoDb kann keine Kartendaten speichern (Java)
@DynamoDBTable(tableName = "ottMiddleware_rails")
public class RailsCmsDomain {
@DynamoDBHashKey(attributeName = "railId")
private String railId;
@DynamoDBTyped
@DynamoDBAttribute(attributeName = "railLogic")
private Map<String, Object> railLogic;
@DynamoDBAttribute(attributeName = "railSourceType")
private String railSourceType;
@DynamoDBAttribute(attributeName = "railTitle")
private RailCmsTitleDomain railTitle;
@DynamoDBTyped
@DynamoDBAttribute(attributeName = "restrictions")
private Map<String, Object> restrictions;
ich folgende Anfrage gebe:
{
"railId": "railOne",
"railLogic": {
"programType": 1,
"railSourceUrl": "http://myUrl"
},
"railSourceType": "myRail",
"railTitle": {
"tam": "Raan Phan",
"def": "சிறப்பு கட்டமைப்பு"
},
"restrictions": {
"clients": [
"abc",
"xyz"
],
"periodStart": 1506572217
}
}
ich verwende folgenden Code meine Daten in die DynamoDB
zu sparenpublic Boolean saveUpdateRailsDetails(RailsCmsDomain railsDomain) {
DynamoDBUtil dynamoDBUtil = new DynamoDBUtil();
AmazonDynamoDB dynamoDBClient = dynamoDBUtil.getDynamoDBClient();
DynamoDBMapper mapper = new DynamoDBMapper(dynamoDBClient);
mapper.save(railsDomain);
return true;
}
Bitte schlagen Sie vor, wie kann ich Karte in dynamoDb speichern. Ich nehme Daten als Karte, weil in späteren Phasen die Wahrscheinlichkeit besteht, dass den Attributen, die eine Karte sind, mehr Daten hinzugefügt werden können und dass Daten von jedem Datentyp sein können. Ich erhalte folgende Fehlermeldung:
errorMessage": "not supported; requires @DynamoDBTyped or
@DynamoDBTypeConverted"
"errorType":
"com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMappingException"
Das Problem liegt in der Restriktionsattributdefinition. Welche Art von Daten enthält es außer Client?Das Problem könnte die Attributdaten nicht konvertieren, wenn es als Map definiert ist. –
notionquest
Einschränkungen enthalten periodStart, die vom Typ lang ist –
ok, warum definieren Sie nicht die Einschränkungen ähnlich wie RailTitle mit benutzerdefinierten Klassendefinition? – notionquest