IntelliJ IDEA에서 Scala (2.11) 및 Play Framework (2.3.0)을 사용하여 응용 프로그램을 개발하고 있습니다. Anonymous를 사용하여 데이터베이스 (MariaDB와 MySQL)에서 데이터를 검색합니다.Scala Play 2.3.0 with Anorm - 패턴 매칭을 사용할 수 없습니다. (IntelliJ에서 Symbol 행을 해결할 수 없습니다.)
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가 아니라는 것이 이해가되지 않습니다 ...
무슨 일이 있습니까?
sbt로 컴파일합니까? – Christian
왜'row'를'anorm' 패키지 (그리고 IDE의 순수한 증오)의 일부로 해결할 수 없는지 말할 수 없습니다. 하지만 어쨌든 패턴 일치가 아닌 파서 API (마지막 문서)를 사용해 보셔야합니다. http://www.playframework.com/documentation/2.3.x/ScalaAnorm –
Christian> 네, 그렇습니다. sbt를 포함하는 Typesafe Activator로 프로젝트를 만들었고'anorm.SQL'이 잘 작동합니다. LimbSoup> 감사합니다. 파서 API를 사용하여 기본 테스트를 수행했는데 제대로 작동하는 것 같습니다. 그러나 처음으로 외부 라이브러리 및 가져 오기에 관한 문제가 발생했습니다 (Anorm로 전환하기 전에 유사한 이유로 Scala Slick을 사용하려고했지만 실제로 중단되었습니다). 행에 대한 대답을 찾을 수 있다면 정말 좋을 것입니다. 해결되지 않았습니다. – Hiino