灵活查询一对可选的一对(零或一)关系
Slick query for one to optional one (zero or one) relationship
给定表:
case class Person(id: Int, name: String)
case class Dead(personId: Int)
并填充了:
Person(1, "George")
Person(2, "Barack")
Dead(1)
是否有可能像这样生成 (Person, Option[Dead])
列表的单个查询?
(Person(1, "George"), Some(Dead(1)))
(Person(2, "Barack"), None)
对于 slick 3.0,它应该是这样的:
val query = for {
(p, d) <- persons joinLeft deads on (_.id === _.personId)
} yield (p, d)
val results: Future[Seq[(Person, Option[Dead])]] = db.run(query.result)
在 slick 中,外连接会自动包装在 Option
类型中。您可以在此处阅读有关加入的更多信息:http://slick.typesafe.com/doc/3.0.0/queries.html#joining-and-zipping
给定表:
case class Person(id: Int, name: String)
case class Dead(personId: Int)
并填充了:
Person(1, "George")
Person(2, "Barack")
Dead(1)
是否有可能像这样生成 (Person, Option[Dead])
列表的单个查询?
(Person(1, "George"), Some(Dead(1)))
(Person(2, "Barack"), None)
对于 slick 3.0,它应该是这样的:
val query = for {
(p, d) <- persons joinLeft deads on (_.id === _.personId)
} yield (p, d)
val results: Future[Seq[(Person, Option[Dead])]] = db.run(query.result)
在 slick 中,外连接会自动包装在 Option
类型中。您可以在此处阅读有关加入的更多信息:http://slick.typesafe.com/doc/3.0.0/queries.html#joining-and-zipping