玩2 Anorm和scala模式匹配

时间:2013-04-01 18:11:10

标签: scala playframework-2.0 anorm

我正在尝试使用anorm从play2模块查询mysql数据库时使用模式匹配。代码如下所示:

def test= Action {
    DB.withConnection { implicit c =>
    val entities = SQL("SELECT entity.idEntity, entity.name FROM entity")().collect {
        case Row(id:Int, name:String) => Entity(id, name)
  }
  printList(entities.toList)

}

但名称:字符串不匹配任何东西(已经尝试仅匹配整数,它工作正常)。在我的数据库中,实体表“名称”列类型是varchar(45)。

我缺少什么?

2 个答案:

答案 0 :(得分:0)

您可以尝试在Row和指定的通配符上匹配Int

scala> new Row(0,"foo")
res0: Row = Row(0,foo)


scala> res0 match{
     | case Row(i: Int,s @ _) => println(i + " " + s)
     | }
0 foo

答案 1 :(得分:0)

如果name可以为空,则此匹配应该有效:

case Row(id:Int, Some(name:String))