'Aws dynamo db mapper is not converting data
log audit method is trying to covert complex json string into map to store data in the form of json into dynamodb table but ending with error java.lang.ClassCastException: java.util.ArrayList cannot be cast to com.amazonaws.services.dynamodbv2.model.AttributeValue
class AuditService{
@Autowired
AuditRepository auditRepository;
ObjectMapper mapper = new ObjectMapper();
public void logAudit(HttpServletRequest httpServletRequest, HttpServletResponse servletResponse) {
Audit audit= new Audit();
// coverting complex json string to map with help of mapper
audit.setEncryptedRequest(mapper.readValue(complex_multiLevel_json_String, new TypeReference<Map>() {})
audit.save();
}
}
@Setter
@Getter
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@DynamoDBTable(tableName = "Audit")
class Audit{
------
------
------
private Map<String, AttributeValue> encryptedRequest;
@DynamoDBTyped(DynamoDBMapperFieldModel.DynamoDBAttributeType.M)
public Map<String, AttributeValue> getEncryptedRequest() {
return encryptedPiiRequest;
}
public void setEncryptedPiiRequest(Map<String, AttributeValue> encryptedRequest) {
this.encryptedRequest = encryptedRequest;
}
}
complex json string which need to store into dynamo db table in the form of map:
note : we don't want to create a model class with below json attribute as field and then storing those model class to dynamo db
"{
"customers": [
{
"applicant": {
"fName": "Duck",
"lName": "PJOHN",
"dob": "19270101",
"ssn": "666455649",
"suffix": ""
},
"phone": [
{
"number": 4239506,
"type": "R"
}
],
"cAddress": {
"line1": "5 LONG DR",
"zipCode": 37604
},
"pAddress": {
"line1": "100, Main St",
"Code": 12345
}
}
],
"iteam": {
"Source": "amazon",
"Type": "BOTH"
}
}"
error:
java.lang.ClassCastException: java.util.ArrayList cannot be cast to com.amazonaws.services.dynamodbv2.model.AttributeValue
at com.amazonaws.services.dynamodbv2.datamodeling.StandardModelFactories$Rules$NativeType.set(StandardModelFactories.java:212) ~[aws-java-sdk-dynamodb-1.11.573.jar:na]
at com.amazonaws.services.dynamodbv2.datamodeling.StandardModelFactories$AbstractRule.convert(StandardModelFactories.java:709) ~[aws-java-sdk-dynamodb-1.11.573.jar:na]
at com.amazonaws.services.dynamodbv2.datamodeling.StandardModelFactories$AbstractRule.convert(StandardModelFactories.java:691) ~[aws-java-sdk-dynamodb-1.11.573.jar:na]
at com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBTypeConverter$DelegateConverter.convert(DynamoDBTypeConverter.java:104) ~[aws-java-sdk-dynamodb-1.11.573.jar:na]
at com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBTypeConverter$NullSafeConverter.convert(DynamoDBTypeConverter.java:123) ~[aws-java-sdk-dynamodb-1.11.573.jar:na]
at com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBTypeConverter$DelegateConverter.convert(DynamoDBTypeConverter.java:104) ~[aws-java-sdk-dynamodb-1.11.573.jar:na]
at com.amazonaws.services.dynamodbv2.datamodeling.StandardModelFactories$Rules$1.convert(StandardModelFactories.java:682) ~[aws-java-sdk-dynamodb-1.11.573.jar:na]
at com.amazonaws.services.dynamodbv2.datamodeling.StandardModelFactories$Rules$1.convert(StandardModelFactories.java:680) ~[aws-java-sdk-dynamodb-1.11.573.jar:na]
at com.amazonaws.services.dynamodbv2.datamodeling.StandardTypeConverters$Vector$ToMap.convert(StandardTypeConverters.java:425) ~[aws-java-sdk-dynamodb-1.11.573.jar:na]
at com.amazonaws.services.dynamodbv2.datamodeling.StandardTypeConverters$Vector$ToMap$1.convert(StandardTypeConverters.java:413) ~[aws-java-sdk-dynamodb-1.11.573.jar:na]
at com.amazonaws.services.dynamodbv2.datamodeling.StandardTypeConverters$Vector$ToMap$1.convert(StandardTypeConverters.java:410) ~[aws-java-sdk-dynamodb-1.11.573.jar:na]
at com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBTypeConverter$DelegateConverter.convert(DynamoDBTypeConverter.java:104) ~[aws-java-sdk-dynamodb-1.11.573.jar:na]
at com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBTypeConverter$NullSafeConverter.convert(DynamoDBTypeConverter.java:123) ~[aws-java-sdk-dynamodb-1.11.573.jar:na]
at com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBTypeConverter$ExtendedConverter.convert(DynamoDBTypeConverter.java:83) ~[aws-java-sdk-dynamodb-1.11.573.jar:na]
at com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapperFieldModel.convert(DynamoDBMapperFieldModel.java:138) ~[aws-java-sdk-dynamodb-1.11.573.jar:na]
at com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapper$SaveObjectHandler.execute(DynamoDBMapper.java:739) ~[aws-java-sdk-dynamodb-1.11.573.jar:na]
at com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapper.save(DynamoDBMapper.java:641) ~[aws-java-sdk-dynamodb-1.11.573.jar:na]
at com.amazonaws.services.dynamodbv2.datamodeling.AbstractDynamoDBMapper.save(AbstractDynamoDBMapper.java:123) ~[aws-java-sdk-dynamodb-1.11.573.jar:na]
at org.socialsignin.spring.data.dynamodb.core.DynamoDBTemplate.save(DynamoDBTemplate.java:146) ~[spring-data-dynamodb-5.1.0.jar:5.1.0]
at org.socialsignin.spring.data.dynamodb.repository.support.SimpleDynamoDBCrudRepository.save(SimpleDynamoDBCrudRepository.java:115) ~[spring-data-dynamodb-5.1.0.jar:5.
javaamazon-web-services">
amazon-web-servicesspring-bootamazon-dynamodb">
amazon-dynamodbmicroservices
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
