scala - Slick 代码生成器 - 主键作为选项

标签 scala playframework slick

我在 Play for scala 2.4 中使用灵活的代码生成器从 SQL 数据库生成类。我想知道如何使用定义为 Option 的主键生成代码,因此当我插入新记录时,我可以放置 None 而不是主键。

假设我有一张 table

OrderItem
----------
orderItemId: int
name: varchar

现在我必须像这样创建实例:

val item = new OrderItem(0, "Item name")
db.run(orderItems += item)

有效,但零只是奇数,所以我的目标是

val item = new OrderItem(None, "Item name")
db.run(orderItems += item)

这可能吗?使用类型为 Option[Int] 的 PK,我也应该能够重用此类,例如用于表单映射。

最佳答案

根据 example in slick documentation只需将 rawType 更改为

    override def rawType = {
      if (model.options.contains(ColumnOption.PrimaryKey)) {
        "Option[" + super.rawType + "]"
      } else {
        super.rawType
      }
    }

更新

我的问题是重复的:Customizing Slick Generator

Slick 代码生成器已经实现了这个:

new SourceCodeGenerator(model){
    override def Table = new Table(_){
        override def autoIncLastAsOption = true
    }
}

关于scala - Slick 代码生成器 - 主键作为选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33200980/

相关文章:

java - 声音在 eclipse 中加载和播放完美,但在转换为可运行的 jar 时卡住

scala - Scala 中类值内的路径依赖类型

javascript - 将函数导出到 scalajs 中的全局范围

java - 为两个方法插入 scala 代码

scala - Zeppelin 集群模式不适用于 spark 1.2 Ambari、Hortonworks Cluster

java - 尝试渲染 pdf 时获取此 "org.xhtmlrenderer.render.BlockBox cannot be cast to org.xhtmlrenderer.newtable.TableBox"

playframework - 为什么 Play 1.x 不缓存以前运行的预编译代码?

mysql - Play Framework : How to correct SQL syntax error in evolution script?

java - 无法使用 Play Framework 1.2.5 发送电子邮件

database - 提交钩子(Hook)后光滑