Kotlin 暴露和继承

问题描述

为项目构建安全性。本质上,我希望能够使用类型为 Interface 的列表存储用户,我认为必须有更好的方法...

我的用户

object TSecUser : IntIdTable() {
    val email = varchar("email",250)
}

class SecUser(id: EntityID<Int>) : IntEntity(id) {
    companion object : IntEntityClass<SecUser>(TSecUser)
    var email by TSecUser.email
    var secRole by SecUserToSecRole via TSecUserToSecRole
}

我的角色

object TSecRole : IntIdTable() {
    val appRoleName = enumerationByName("app_role_name",15,SecRoleName::class)
    val description = varchar("description",100)
}

class SecRole(id: EntityID<Int>) : IntEntity(id) {
    companion object : IntEntityClass<SecRole>(TSecRole)
    var appRoleName by TSecRole.appRoleName
    var description by TSecRole.description
}

我的派生角色

object TSalesMan : IntIdTable() {
    val secUserToSecRole = reference("sec_user_to_sec_role_id",TSecUserToSecRole)
    val manager = reference("manager_id",TSalesManager)
}

class SalesMan(id: EntityID<Int>) : IntEntity(id),IHasSecUserToSecRole {
    companion object : IntEntityClass<SalesMan>(TSalesMan)
    override var  secUserToSecRole by SecUserToSecRole referencedOn TSalesMan.secUserToSecRole
}

object TSalesManager : IntIdTable() {
    val secUserToSecRole = reference("sec_user_to_sec_role_id",TSecUserToSecRole)
}

class SalesManager(id: EntityID<Int>) : IntEntity(id),IHasSecUserToSecRole {
    companion object : IntEntityClass<SalesManager>(TSalesManager)
    override var  secUserToSecRole by SecUserToSecRole referencedOn TSalesManager.secUserToSecRole
}

最后我有一个映射道

object TSecUserToSecRole : IntIdTable() {
    val secUser = reference("sec_user_id",TSecUser)
    val secRole = reference("sec_role_id",TSecRole)
}

class SecUserToSecRole(id: EntityID<Int>) : IntEntity(id){
    companion object : IntEntityClass<SecUserToSecRole>(TSecUserToSecRole)
    var secUser by TSecUserToSecRole.secUser
    var secRole by TSecUserToSecRole.secRole
}

interface IHasSecUserToSecRole{
    var secUserToSecRole:SecUserToSecRole
}

我不认为我走的是正确的道路,任何关于更好方法的输入都会很棒。

我认为我真的应该让 SecUserToSecRole 和公开课,但我不知道如何在公开中表示。

提前准备好。为文字墙道歉

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)