光滑的代码生成器 - 主键作为选项

时间:2015-10-18 17:27:26

标签: scala playframework slick

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

我们假设我有一张桌子

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,我应该也可以重用此类,例如用于表格映射。

1 个答案:

答案 0 :(得分:2)

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

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

<强>更新

我的问题是重复:Customizing Slick Generator

光滑的代码生成器已经实现了这个:

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