【发布时间】:2012-11-01 15:57:30
【问题描述】:
Slick DSL 允许通过两种方式在表中创建可选字段。
对于这个案例类:
case class User(id: Option[Long] = None, fname: String, lname: String)
您可以通过以下方式之一创建表映射:
object Users extends Table[User]("USERS") {
def id = column[Int]("id", O.PrimaryKey, O.AutoInc)
def fname = column[String]("FNAME")
def lname = column[String]("LNAME")
def * = id.? ~ fname ~ lname <> (User, User.unapply _)
}
和
object Users extends Table[User]("USERS") {
def id = column[Option[Long]]("id", O.PrimaryKey, O.AutoInc)
def fname = column[String]("FNAME")
def lname = column[String]("LNAME")
def * = id ~ fname ~ lname <> (User, User.unapply _)
}
}
这两者有什么区别?一种是旧方法,另一种是新方法,还是它们的用途不同?
我更喜欢将身份定义为可选作为 id 定义的一部分的第二种选择,因为它更加一致。
【问题讨论】:
标签: scala scalaquery slick