kotlin - Kotlin ktor 暴露 DSL 插入参考
问题描述
我正在开发一个带有 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>
but found的编译错误String
。关于如何插入参考的任何帮助。这可能是因为我将字符串作为带有 UUID 的 ID 列
解决方案
userId
必须EntityId<String>
采取. 所以你应该将你的 userId 作为it[userId] = EntityId(userId, Users)
.
为了避免这种情况,我使用plainTable
代替IntIdTable
并手动创建我的主键。这样我可以直接传递值而不用将它包装在EntityId<>
.
推荐阅读
- haskell - foldr 和 foldl 之间的区别对地图和集合很重要吗?
- aframe - A-Frame:使用激光控制在鼠标向下旋转实体
- django - 如何使用 nginx 将子域(的内容)显示为路径/子文件夹
- xamarin.forms - 我可以更改 MasterDetail 页面的 3-bar-icon 按钮吗?
- javascript - 更新 Vuetify 滑块上的值
- c# - Printing max value in a file
- ruby-on-rails - how do you clear jobs from ActiveJob queue?
- ruby - 什么会导致工作目录被改变(如果 `Dir.chdir` 没有被调用)?
- mysql - 在mysql中搜索特定单词
- javascript - websocket 服务器如何在一个对象中保存不同的客户端信息?