给定的映射具有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)

10-08 16:16