2016-09-14 83 views
1
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

+0

我想你也許只想[使用華而不實的代碼生成器(http://slick.lightbend.com/doc/3.0 .0/code-generation.html)來生成這個東西......(這不會回答這個問題,我知道......它有希望使問題變得模糊!)。這個問題的實際答案涉及到將這些列聲明爲該值的選項,但是由於我們生成了這些東西,所以我不需要了解詳細信息:) – GreenAsJade

回答

4

我們可以通過聲明字段是在case class

nullableOption[T]比方說我們有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) 
} 

年齡字段爲空並且其默認值爲null

+0

非常感謝! –