[Day 20] exposed 的多對多關聯

上次談到了一對多的關聯做法,今天我們來談談多對多關聯的做法。

多對多關聯

要處理多對多關聯,我們要加上一張關聯表:

object CitiesUsers : Table() {
    val city = reference("city", Cities)
    val user = reference("user", Users)
}

然後,要讓 可以透過這張表存取關聯,我們要加上 via

class City(id: EntityID<Int>) : IntEntity(id) {
    companion object : IntEntityClass<City>(Cities)

    var name by Cities.name
    val users by User via CitiesUsers
}

class User(id: EntityID<Int>) : IntEntity(id) {
    companion object : IntEntityClass<User>(Users)

    var name by Users.name
    var city by City rvia CitiesUsers
}

這樣,我們就可以像之前一樣,透過 DAO 的關聯存取相關物件了!