2016-09-14 82 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

非常感谢! –