我正在 IntelliJ IDEA 上使用 Scala (2.11) 和 Play Framework (2.3.0) 开发应用程序。我正在使用 Anorm 从我的数据库(带有 MariaDB 的 MySQL)中检索数据。
这是我的第一个测试应用程序(它有效):
package controllers
import play.api.mvc._
import play.api.db._
import anorm._
case class Client(id: Int, nom: String, prenom: String)
object Application extends Controller {
def index = Action {
var result: List[(Int, String)] = List()
val sqlQuery = SQL(
"""
select idClient, nameClient from Clients
where idClient = {idClient};
"""
).on("idClient" -> 1)
DB.withConnection { implicit conn =>
result = sqlQuery().map(row =>
row[Int]("IDClient") -> row[String]("NameClient")
).toList
}
Ok(result.toString)
}
}
这工作正常。我正确地得到了我的客户的名字。但是,当我尝试使用模式匹配时,如下所示:
result = sqlQuery().collect {
case Row(idClient: Int, nameClient: String) => idClient -> nameClient
}
IntelliJ 给我一个错误,指出它“ Cannot resolve Symbol Row
”。据我所知,Row 是在 Anorm 库中定义的,SQL 也是如此。找到 SQL 而不是 Row 是没有意义的...
发生了什么?