2015-10-18 61 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 
    } 
}