如何将列默认值设置为Null?(在光滑的)

Eld*_*nov 2 scala slick slick-3.0

case class Account(var email:String, var pass:String, var familyId: Int, var accessId: Int, id: Option[Int] = None)

// A Accounts table with 5 columns: id, email, pass, familyId, accessId
class Accounts(tag: Tag) extends Table[Account](tag, "ACCOUNTS") {

  def id = column[Int]("ID", O.AutoInc, O.PrimaryKey)
  def email = column[String]("EMAIL")
  def pass = column[String]("PASS")
  def familyId = column[Int]("FAMILY_ID")                            // TODO: add fk family_id
  def accessId = column[Int]("ACCESS_ID")                            // TODO: add fk access_id

  def * = (email, pass, familyId, accessId, id.?) <> (Account.tupled, Account.unapply)

}
Run Code Online (Sandbox Code Playgroud)

创建具有这种结构的表后,表中的所有列都是Not Null.

那么如何设置它们Nullable并将它们的值设置为Null

pam*_*amu 7

我们可以通过声明nullableOption[T]中的字段来做到这一点case class

比方说,我们有User一流的,我们希望age值是nullable和年龄的默认值是null.所以我们在下面声明我们的类.通知年龄是Option[Int].

case class User(name: String, age: Option[Int])

class Users(tag: Tag) extends Table[User](tag, "users") {
  def name = column[String]("name")
  def age = column[Option[Int]]("age", O.Default(None)) //notice default value is None which translates to Null in database
  def * = (name, age) <> (User.tupled, User.unapply)
}
Run Code Online (Sandbox Code Playgroud)

age字段可以为空,其默认值为null