Slick DSLでは、テーブルにオプションのフィールドを作成する2つの方法があります。
この場合のクラスの場合:
case class User(id: Option[Long] = None, fname: String, lname: String)
次のいずれかの方法でテーブルマッピングを作成できます。
object Users extends Table[User]("USERS") {
def id = column[Int]("id", O.PrimaryKey, O.AutoInc)
def fname = column[String]("FNAME")
def lname = column[String]("LNAME")
def * = id.? ~ fname ~ lname <> (User, User.unapply _)
}
と
object Users extends Table[User]("USERS") {
def id = column[Option[Long]]("id", O.PrimaryKey, O.AutoInc)
def fname = column[String]("FNAME")
def lname = column[String]("LNAME")
def * = id ~ fname ~ lname <> (User, User.unapply _)
}
}
2つの違いは何ですか?一方は古い方法で、もう一方は新しい方法ですか、それとも異なる目的を果たしますか?
一貫性が高いため、ID定義の一部としてIDをオプションとして定義する2番目の選択肢をお勧めします。