0

我在使用 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)

}

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

有什么我想念的吗?

4

2 回答 2

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
于 2013-04-01T18:23:49.310 回答
0

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

case Row(id:Int, Some(name:String)) 
于 2013-06-19T20:57:25.510 回答