2016-09-14 27 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です。列のデフォルト値をNullに設定するにはどうすればよいですか? (滑らかで)

これをNullableに設定し、値をNullに設定するにはどうすればよいですか?

+0

私はあなたがおそらく([滑らかなコードジェネレータを使用]にしたいと思いますhttp://slick.lightbend.com/doc/3.0 .0/code-generation.html)これを生成するには...(これは質問には答えません、私は知っています。実際の質問への答えには値のオプションとして列を宣言する必要がありますが、このようなものを生成するので、詳細を理解する必要はありません。 – GreenAsJade

答えて

4

我々はUserクラスを持っていると我々はage値はnullableになりたいと年齢のデフォルト値はnullであると言うことができますcase class

Option[T]としてnullableあるフィールドを宣言することにより、これを行うことができます。そこで、私たちは以下のようにクラスを宣言します。通知年齢は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可能で、デフォルト値はnullです

+0

ありがとうございます! –

関連する問題