Почему мой объект не вписывается в определенную KeySchema? - PullRequest
0 голосов
/ 08 января 2020

Я хочу сделать несколько интеграционных тестов с моей 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)
}

Кто-нибудь видит, почему возникает эта ошибка? Я предполагаю, что это из-за связи между объектом, который я предоставляю мапперу, и определением таблицы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...