给定的映射具有NOT NULL
字段str
的默认值:
case class Tst(id: Option[Int] = None, ii: Int, str: String)
class Tsts(tag: Tag) extends Table[Tst](tag, "tsts") {
def id = column[Option[Int]]("id", O.PrimaryKey, O.AutoInc)
def ii = column[Int]("ii")
def str = column[String]("str", O.Default("ddd"))
def * = (id, ii, str) <> (Tst.tupled, Tst.unapply)
}
如果有,如何插入指定字段值的对象:
Tst(ii = 1, str = "aaa")
如果我不这样做,请跳过它:
Tst(ii = 1)
是的,我知道最后一条语句不会编译。
我尝试使用
Option[String]
和其他东西。它最终以插入null
或以can't be null
错误失败 最佳答案
编译器取决于您将默认值放在最后,例如:
scala> case class TST(ii: Int, str: String = "aaa", id: Option[Int] = None)
defined class TST
scala> new TST(3)
res0: TST = TST(3,aaa,None)
编辑:只是意识到我没有完全回答:
scala> new TST(3, id = Some(1))
res1: TST = TST(3,aaa,Some(1))
scala> new TST(3, str = "bbb")
res2: TST = TST(3,bbb,None)