ktorm
ktorm copied to clipboard
How to use entities with many-to-many relations?
I have a table Users(id, name, role) and another Departments(id, name). Each user can be in several departments and each department can have several users, so i create a table User_Departments(user_id, department_id). How can I declare a User entity having a list of departments? This is what it looks like now:
// Users
interface User : Entity<User> {
companion object : Entity.Factory<User>()
var id: Int
var name: String
var role: Role
}
object Users : Table<User>("Users") {
val id = int("id").primaryKey().bindTo { it.id }
val name = varchar("name").bindTo { it.name }
val roleId = int("role_id").references(Roles) { it.role }
val Database.users get() = database.sequenceOf(Users)
}
// Departments
interface Department : Entity<Department> {
companion object : Entity.Factory<Department>()
val id: Int
var name: String
}
object Departments : Table<Department>("Departments") {
val id = int("id").primaryKey().bindTo { it.id }
val name = varchar("name").bindTo { it.name }
val Database.departments get() = database.sequenceOf(Departments)
}
// UserDepartments
interface UserDepartment : Entity<UserDepartment> {
companion object : Entity.Factory<UserDepartment>()
var user: User
var department: Department
}
object UserDepartments : Table<UserDepartment>("User_Departments") {
val userId = int("user_id").references(Users) { it.user }
val departmentId = int("department_id").references(Departments) { it.department }
val Database.userDepartments get() = database.sequenceOf(UserDepartments)
}