Я хочу сделать несколько интеграционных тестов с моей DynamoDB. Для первого варианта использования мне нужно сохранить объект в таблицу. Каким-то образом моя установка DynamoD не устраивает объект, который я пытаюсь сохранить.
Вот мои настройки. Таблица с ключом "ID" га sh и ключом диапазона "ACCOUNT_ID":
private fun createPOITable() {
val attributeDefinitions = ArrayList<AttributeDefinition>()
attributeDefinitions.add(AttributeDefinition().withAttributeName(ID).withAttributeType("S"))
attributeDefinitions.add(AttributeDefinition().withAttributeName(ACCOUNT_ID).withAttributeType("S"))
val tableKeySchema = ArrayList<KeySchemaElement>()
tableKeySchema.add(KeySchemaElement().withAttributeName(ID).withKeyType(KeyType.HASH))
tableKeySchema.add(KeySchemaElement().withAttributeName(ACCOUNT_ID).withKeyType(KeyType.RANGE))
val request = CreateTableRequest()
.withTableName(POI_TABLE_NAME)
.withKeySchema(tableKeySchema)
.withAttributeDefinitions(attributeDefinitions)
.withBillingMode(BillingMode.PAY_PER_REQUEST)
amazonDynamoDB.createTable(request)
}
А теперь вот код, который не работает:
val mypoi = MYPOI(id, accountId, "CUSTOMER")
val toBeSavedPOI = mypoi.convertToPOIDb()
mapper.save(toBeSavedPOI)
Мой картограф дает мне ошибка «Один из обязательных ключей не получил значение (Служба: ноль; Код состояния: 400; Код ошибки: ValidationException; Идентификатор запроса: ноль)»
Это объект экземпляр, который я создаю и пытаюсь сохранить в таблицу:
data class POIDb (
var type: String?,
var accountId: String?,
@DynamoDBIndexHashKey(globalSecondaryIndexName = POI_ID_INDEX_NAME)
@DynamoDBRangeKey
var id: String?,
@DynamoDBIndexRangeKey(localSecondaryIndexName = TYPE_ACCOUNT_ID_IDENTIFIER_INDEX_NAME)
var identifier: String?,
var name: String?,
var coordinates: CoordinatesDb?,
var address: AddressDb?,
var category: String?
) {
constructor(type: String?, accountId: String?, id: String?) : this(type, accountId, id, null, null, null, null, null)
}
Кто-нибудь видит, почему возникает эта ошибка? Я предполагаю, что это из-за связи между объектом, который я предоставляю мапперу, и определением таблицы.