Kotlin ktor 公开 DSL 插入参考

Kotlin ktor exposed DSL insert with reference

我正在开发一个带有 ktor 应用程序的 Kotlin,我正在使用 exposed as ORM。我有一个 table 引用了另一个 table。这种关系是多对一的。例如:

object Users : IdTable<String>() {
   override val id: Column<EntityID<String>> = varchar("user_id", 64).entityId().primaryKey()
   val email = varchar("email", 128).uniqueIndex()
   val firstName = varchar("first_name", 64)
   val lastName = varchar("last_name", 64)
}

& 用户出席率 table 作为 -

object UserAttendances : IntIdTable() {
   val userId = reference("user_id", Users).index()
   val checkInTime = date("check_in")
   val checkOutTime = date("check_out")
}

现在,当我尝试插入出勤 table 时,我不确定如何将插入映射到用户。我尝试了以下 -

StaffAttendances.insert {
    it[date] = DateTime.now()
    it[checkInTime] = DateTime.now()
    it[userId] = userId
}

这给出了一个编译错误,要求的类型是 EntityId<String> 但找到了 String。关于如何插入参考的任何帮助。这可能是因为我将 String 作为 ID 列与 UUID

userId 必须取一个 EntityId<String>。所以你应该将你的 userId 作为 it[userId] = EntityId(userId, Users).

为了避免这种情况,我使用纯 Table 而不是 IntIdTable 并手动创建我的主键。这样我就可以直接传递值而无需将其包装在 EntityId<>.