Используя DynamoDBMapper в AWS Lambda (т.е. не в Android), написанном на Kotlin, я могу сохранить запись, используя класс данных. Однако, когда я пытаюсь загрузить запись в класс данных, я получаю исключение «DynamoDBMappingException: не удалось создать экземпляр класса».
@DynamoDBTable(tableName = "Test")
data class TestItem(
@DynamoDBHashKey(attributeName="someKey")
@DynamoDBAttribute(attributeName = "someKey")
var someKey: String?,
@DynamoDBAttribute(attributeName = "someValue")
var someValue: String?
}
val ddbMapper = DynamoDBMapper(AmazonDynamoDBClientBuilder.defaultClient())
ddbMapper.load(TestItem::class.java, "xyz")
Результат в следующем исключении:
com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMappingException:
не мог создать экземпляр класса
com.intuit.connect_to_pro.lambda_common_core.aws_service.TestItem
С исключением из корневого каталога:
java.lang.NoSuchMethodException:
com.intuit.connect_to_pro.lambda_common_core.aws_service.TestItem. ()
В AWS есть пример для Android, который использует com.amazonaws.mobileconnectors.dynamodbv2.dynamodbmapper.DynamoDBMapper вместо com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapper. Я попробовал версию для Android, но результат был тот же.
https://docs.aws.amazon.com/aws-mobile/latest/developerguide/add-aws-mobile-nosql-database.html
Любая помощь будет оценена.