2013-10-27 16 views
9

Tôi đang hướng dẫn của Slick documentation sau và tôi không hiểu những gì tôi đang làm sai ở đây:Scala, Play Khung vấn đề Slick - không thể tìm thấy giá trị tiềm ẩn cho rconv tham số

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] 
     } 
    } 

} 

Dòng

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

là cho tôi điều này:

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] 

tôi đang làm gì sai ở đây?

Chơi khung 2.2.0, Scala 2.10.3, Slick 1.0.1

Trả lời

12

Bạn cần cung cấp chức năng chuyển đổi từ kết quả cho người dùng. Sao chép và chuyển thẳng từ slick home:

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

Hoặc this section từ tài liệu bạn liên kết

+1

Nhưng mà chức năng chuyển đổi này nên tồn tại? trong lớp Người dùng? Trong hàm đang thực hiện truy vấn? ở đâu khác? Đó là câu hỏi tôi chưa bao giờ thấy được trả lời. Ngoài ra mỗi khi tôi cố gắng này tôi nhận được "phân tán mở rộng tiềm ẩn" lỗi –

+0

@EricHartford Trong ví dụ của tôi tôi đã đặt nó bên trong 'Data' đối tượng ngay bên dưới' trường hợp lớp User', không biết nếu điều đó giúp. Ngoài ra, hãy tra cứu các câu hỏi khác của tôi về cùng một chủ đề - Tôi đã có một nửa tá câu hỏi được giải quyết. – Caballero

+1

Không thực sự quan trọng nơi bạn đặt nó, miễn là nó nằm trong phạm vi. Trong một số trường hợp, Scala tự động nhập khẩu các implicits có trong các đối tượng đồng hành, vì vậy trong đối tượng đồng hành 'User' có thể là một vị trí tốt. – pedrofurla

Các vấn đề liên quan