2015-10-18 54 views
2

我使用漂亮的代码生成器来为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

根据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 
    } 
}