我正在使用ktor应用程序开发Kotlin,并且正在使用暴露为ORM。我有一个表,其中引用了另一个表。这种关系是一对多的。例如:
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)
}
&用户出勤表为-
object UserAttendances : IntIdTable() {
val userId = reference("user_id", Users).index()
val checkInTime = date("check_in")
val checkOutTime = date("check_out")
}
现在,当我尝试插入到出勤表中时,我不确定如何将插入内容映射到用户。我尝试了以下-
StaffAttendances.insert {
it[date] = DateTime.now()
it[checkInTime] = DateTime.now()
it[userId] = userId
}
这给出了一个编译错误,要求的类型是
EntityId<String>
但找到了String
。关于如何插入参考的任何帮助。这可能是因为我将String作为具有UUID的ID列 最佳答案
userId
必须采用EntityId<String>
。因此,您应该将userId作为it[userId] = EntityId(userId, Users)
传递。
为避免这种情况,我使用普通的Table
而不是IntIdTable
并手动创建主键。这样,我可以直接传递值,而无需将其包装在EntityId<>
中。
关于kotlin - Kotlin Ktor裸露的DSL插件带有引用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57281338/