2013-10-27 11 views
9

Sto seguendo le linee guida di Slick documentation e non capisco che cosa sto facendo male qui:Scala, Giocare quadro problema Slick - non poteva trovare valore implicito per il parametro rconv

package models 

import scala.slick.session.Database 
import Database.threadLocalSession 
import scala.slick.jdbc.{GetResult, StaticQuery => Q} 
import javax.sql.DataSource 
import Q.interpolation 

object Data { 

    case class User(user: String, password: String) 

    lazy val db = Database.forName("default") 

    def result: Option[User] = { 
     db.withSession { 
      sql"SELECT user, password FROM user WHERE user = 'user' AND password = 'pass'".as[User] 
     } 
    } 

} 

La linea

sql"SELECT user, password FROM user WHERE user = 'user' AND password = 'pass'".as[User] 

mi sta dando questa:

Multiple markers at this line 
    - could not find implicit value for parameter rconv: scala.slick.jdbc.GetResult[models.Data.User] 
    - could not find implicit value for parameter rconv: scala.slick.jdbc.GetResult[models.Data.User] 

che cosa sto facendo male qui?

Giocare 2.2.0 Framework, Scala 2.10.3, Slick 1.0.1

risposta

12

è necessario fornire la funzione di conversione da risultato all'utente. Copiato e adattato direttamente dal slick home:

implicit val getUserResult = GetResult(r => User(r.<<, r.<<)) 

O this section dalla documentazione si è collegato

+1

Ma dove questa funzione di conversione dovrebbe esistere? all'interno della classe User? All'interno della funzione che sta eseguendo la query? altrove? Questa è la domanda a cui non ho mai risposto. Inoltre, ogni volta che provo a farlo, ottengo l'errore "Espansione implicita dell'espansione" –

+0

@EricHartford Nel mio esempio l'ho messo all'interno dell'oggetto 'Data' appena sotto' Case class User', non so se questo aiuti. Inoltre, guarda le altre mie domande sullo stesso argomento: ho risolto una mezza dozzina di domande. – Caballero

+1

Non importa dove lo metti, purché sia ​​nella portata. In alcune circostanze, Scala importa automaticamente le implicazioni presenti negli oggetti associati, quindi nell'oggetto complementare "Utente" potrebbe essere un buon posto. – pedrofurla