2

我是 Scala 和 Anorm 的新手,但我正在尽力尝试一下。我现在正试图填充对象的子列表。

例如,我有一个有多个电话号码的联系人。我将如何从数据库中填写我的电话号码?

斯卡拉

case class Contact(id: long, phoneNumbers: List[PhoneNumber])
case class PhoneNumber(area: String, rest: String)

表结构

Contact
  id bigint

PhoneNumber
 area varchar(3)
 rest varchar(7)
 contact_id bigint
4

1 回答 1

4

你可以尝试这样的事情:

val contacts: Iterable[Contact] = SQL(
  """
    SELECT c.id, p.area, p.rest
    FROM PhoneNumber p
    JOIN Contact c on p.contact_id = c.id;
  """
).as(long("id") ~ str("area") ~ str("rest") map(flatten) *
).groupBy(_._1).map {
  case (k,l) => Contact(k, l.map {
    d => PhoneNumber(d._2, d._3)
  })
}
于 2013-04-27T11:17:06.317 回答