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<>
.
中
我正在开发一个带有 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<>
.