【发布时间】:2016-03-14 11:43:45
【问题描述】:
我了解 Slick 不是 ORM,因此不了解关系。鉴于此,光滑的 Table 类几乎反映了底层数据库表,例如它们将包括 addressId 属性,而不是 Address 属性。这一切对我来说都很有意义。
我不明白的是,如果案例类还必须镜像表,为什么我还要使用案例类?鉴于我理解的典型 Person, Address 示例,我不能轻易使用:
case class Person(id: Option[Int], name: String, address: Option[Address])
因为 slick 无法从 addressId 映射到 Option[Address] 即
class PersonTable(tag: Tag) extends Table[Person](tag, "PERSON") {
def id = column[Long]("id", O.PrimaryKey, O.AutoInc)
def name = column[String]("name")
def addressId = column[Int]("address_id")
def * = (id, name, addressId) <> (Person.tupled, Person.unapply)
}
所以我需要创建一个 Person 案例类,如下所示:
case class Person(id: Option[Int], name: String, address: Option[Int])
这几乎是 PersonTable 的镜像?
【问题讨论】:
标签: slick