2013-10-27 72 views
9

我下面的Slick documentation準則隱含的價值,我不明白我在做什麼錯在這裏:斯卡拉,播放框架油滑的問題 - 無法找到參數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] 
     } 
    } 

} 

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

是給我這樣的:

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] 

我在做什麼錯在這裏?

播放框架2.2.0,2.9.3斯卡拉,油滑1.0.1

回答

12

您需要提供的轉換功能,從結果到用戶。從您鏈接

+1

但這種轉換功能應該在哪裏存在的文檔

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

或者this section:複製和改編直接從slick home?在用戶類內?在執行查詢的函數中?別的地方?這是我從未見過的答案。同樣每次我嘗試這個時,我都會得到「divergence implicit expansion」錯誤 –

+0

@EricHartford在我的例子中,我把它放在'case class User'下面的'Data'對象中,不知道是否有幫助。另外,查看關於同一主題的其他問題 - 我已經解決了其中的六個問題。 – Caballero

+1

只要它在範圍內,放在哪裏並不重要。在某些情況下,Scala會自動導入伴隨對象中的implicits,所以在'User'伴侶對象中可能是一個好地方。 – pedrofurla