当前位置: 首页 > 知识库问答 >
问题:

Kotlin ktor暴露DSL插入参考

笪建章
2023-03-14

我正在使用ktor应用程序开发一种静态编程语言,我使用暴露作为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


共有1个答案

童化
2023-03-14

用户ID必须采用实体ID

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

 类似资料:
  • 主要内容:1.概述,2.doExportUrls,3. Protocol1.概述 Dubbo 服务暴露有两种方式 本地暴露,JVM 本地调用。配置如下: <dubbo:service scope=“local” /> <dubbo:service scope=“remote” /> 在不配置 scope 的情况下,默认两种方式都暴露。 2.doExportUrls 本地暴露服务的顺序图如下: 我们看到 ServiceConfig#export() 方法中,会在配置初始

  • 如果你的服务需要预热时间,比如初始化缓存,等待相关资源就位等,可以使用 delay 进行延迟暴露。我们在 Dubbo 2.6.5 版本中对服务延迟暴露逻辑进行了细微的调整,将需要延迟暴露(delay > 0)服务的倒计时动作推迟到了 Spring 初始化完成后进行。你在使用 Dubbo 的过程中,并不会感知到此变化,因此请放心使用。 Dubbo-2.6.5 之前版本 延迟到 Spring 初始化完

  • EXPOSE 声明端口 格式为 EXPOSE <端口1> [<端口2>...]。 EXPOSE 指令是声明运行时容器提供服务端口,这只是一个声明,在运行时并不会因为这个声明应用就会开启这个端口的服务。在 Dockerfile 中写入这样的声明有两个好处,一个是帮助镜像使用者理解这个镜像服务的守护端口,以方便配置映射;另一个用处则是在运行时使用随机端口映射时,也就是 docker run -P 时,

  • 8.1. 源码暴露 你的WEB服务器必须要能够读取你的源确并执行它,这就意味着任意人所写的代码被服务器运行时,它同样可以读取你的源码。在一个共享主机上,最大的风险是由于WEB服务器是共享的,因此其它开发者所写的PHP代码可以读取任意文件。 <?php header('Content-Type: text/plain'); readfile($_GET['file']); ?> 通过在你的源码所在的

  • 5.1. 源码暴露 关于包含的一个重要问题是源代码的暴露。产生这个问题主要原因是下面的常见情况: l对包含文件使用.inc的扩展名 l包含文件保存在网站主目录下 lApache未设定.inc文件的类型 lApache的默认文件类型是text/plain 上面情况造成了可以通过URL直接访问包含文件。更糟的是,它们会被作为普通文本处理而不会被PHP所解析,这样你的源代码就会显示在用户的浏览器上(见图

  • 主要内容:1. 概述,2.本地暴露,3 远程暴露1. 概述 Dubbo 服务暴露有两种方式 本地暴露,JVM 本地调用。配置如下: 远程暴露,网络远程通信。配置如下: 在不配置 scope 的情况下,默认两种方式都暴露 2.本地暴露 2.1 doExportUrls 本地暴露服务的顺序图如下: ServiceConfig#export() 方法中,会在配置初始化完成后,调用顺序图的起点 #doExportUrls() 方法,开始暴露服务。代码如