我正在使用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列
答案 0 :(得分:0)
userId
必须带有EntityId<String>
。因此,您应该将用户ID传递为it[userId] = EntityId(userId, Users)
。
为避免这种情况,我使用普通的Table
而不是IntIdTable
并手动创建主键。这样,我可以直接传递值,而无需将其包装在EntityId<>
中。