0

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가 아니라는 것이 이해가되지 않습니다 ...

무슨 일이 있습니까?

+0

sbt로 컴파일합니까? – Christian

+0

왜'row'를'anorm' 패키지 (그리고 IDE의 순수한 증오)의 일부로 해결할 수 없는지 말할 수 없습니다. 하지만 어쨌든 패턴 일치가 아닌 파서 API (마지막 문서)를 사용해 보셔야합니다. http://www.playframework.com/documentation/2.3.x/ScalaAnorm –

+0

Christian> 네, 그렇습니다. sbt를 포함하는 Typesafe Activator로 프로젝트를 만들었고'anorm.SQL'이 잘 작동합니다. LimbSoup> 감사합니다. 파서 API를 사용하여 기본 테스트를 수행했는데 제대로 작동하는 것 같습니다. 그러나 처음으로 외부 라이브러리 및 가져 오기에 관한 문제가 발생했습니다 (Anorm로 전환하기 전에 유사한 이유로 Scala Slick을 사용하려고했지만 실제로 중단되었습니다). 행에 대한 대답을 찾을 수 있다면 정말 좋을 것입니다. 해결되지 않았습니다. – Hiino

답변

0

anorm.Row 추출기가 Play 2.3에 없습니다. 제안 된대로 파서를 사용할 수 있습니다.

+0

https://github.com/playframework/playframework/pull/3049에 복원 될 수 있습니다. – cchantep

+0

아, 그럼이 사실을 설명합니다. 고마워, 이미 파서 API를 사용하기 시작했고 잘 작동한다. – Hiino

관련 문제