Как вставить в Kotlin Exposed запись с внешним ключом? - PullRequest
0 голосов
/ 03 июня 2019

Я не могу найти в документации Kotlin Exposed способ вставки записи с внешним ключом:

object DocumentTable : IntIdTable() {
    val description = varchar("desc", 200)
}

object TransactionTable : IntIdTable() {
    val amount = long("amount")
    val documentId = reference("documentId", DocumentTable.id)
}

fun createTrans(amount: Long, document: Document) {
    transaction {
        TransactionTable.insert {
           it[this.amount] = amount
           it[this.documentId] =  ?????????????
        }
    }
}

1 Ответ

0 голосов
/ 04 июня 2019

Вы должны сделать это так же, как вы вставляете любое другое значение - укажите правильное documentId:

transaction {
    val docId = DocumentTable.select { /*your condition here */ }.single()[DocumentTable.id] 
    // or if you want to construct your id from scratch (be sure that you have such record in a database or it will fail with exception)
    val docId = EntityID(123, DocumentTable)

    TransactionTable.insert {
       it[this.amount] = amount
       it[this.documentId] = docId
    }
}
...