带有Anorm的Scala Play 2.3.0 - 无法使用模式匹配(IntelliJ无法解析符号行)

时间:2014-06-17 10:59:36

标签: scala intellij-idea playframework anorm playframework-2.3

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

是没有意义的

发生了什么?

1 个答案:

答案 0 :(得分:0)

anorm.Row提取器不在Play 2.3中。如建议你可以使用解析器。