2012-11-09 41 views
0

我使用下面的代码从一个MySQL表要求项目查询(Account类仅仅是代表数据库中的字段的情况下类)斯卡拉油滑:使用直接嵌入不起作用

val res = Queryable[Account].map(_.name) 

val db = Database.forURL("jdbc:mysql://localhost:3306/databasename", driver = "com.mysql.jdbc.Driver", user="username", password="password") 
val backend = new SlickBackend(MySQLDriver, AnnotationMapper) 

db withSession { 
    val r=backend.toList(res) 
    println(r.toString) 
} 

线

val r=backend.toList(res) 

抛出以下异常:

[ToolBoxError: reflective typecheck has failed: ambiguous implicit values: both value StringCanBuildFrom in object Predef of type => scala.collection.generic.CanBuildFrom[String,Char,String] and method conforms in object Predef of type [A]=> <:<[A,A] match expected type T] 

可能是什么原因呢?我使用的是Scala 2.10.0-RC1和Slick 0.11.2。

这里顺便Account类的样子:

@table("account") 
case class Account (
    @column("ID") id: Long, 
    ... 
    @column("Name") name: String, 
    ... 
) 
+0

不确定,但尝试“db.withSession {...” – virtualeyes

+0

没有区别:( – Heinzi

+0

不熟悉浮油,但这是什么toList方法?你不能明确地告诉编译器,你期待一个List [Account]?在ScalaQuery上我做了类似list [Foo](someQuery)的事情,其中​​list是一个辅助方法,它在查询中调用SQ的列表方法,并将其转换为给定的T.不是typesafe,但非常方便。 – virtualeyes

回答

0

这意味着类型不匹配MySQL的类型。即id应该是一个Int不是一个长。