gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 23:52:30 25 4
gpt4 key购买 nike

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)

}

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

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

最佳答案

我们可以通过在 case class 中将 nullable 字段声明为 Option[T] 来实现这一点

假设我们有 User 类,我们希望 age 值为 nullable 并且 age 的默认值为 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)
}

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

关于scala - 如何将列默认值设置为 Null? (光滑),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39481183/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com