1

我在一个抽象类中定义了这个方法:

abstract class RichTable[T](name: String) extends Table[T](name) {
    def insert(model : T) = Database { implicit db: Session =>
    *.insert(model.copy(id = getNextId(classOf[T].getSimpleName())))
  }
  //other methods which are fine
}

它 ( model.copy) 说:

could not find implicit value for evidence parameter of type scala.slick.lifted.TypeMapper[T]

我根本不知道如何解决这个问题。我是一个 scala 初学者,我只是坚持这一点。任何人都可以给我一个线索吗?

4

1 回答 1

0

证据参数是函数的柯里化隐式参数,如model.copy(id)(implicit typeMapper). 您需要声明implicit val typeMapper: scala.slick.lifted.TypeMapper[T] = something. 在 的来源中搜索 F3 model.copy

编辑

不太对,改变def insert(model: T) to def insert[T: ClassManifest](model: T)应该可以解决问题。为什么?

在您的函数内部,您使用classOf[T],但 T 的实际类型在运行时被删除,并且不清楚getSimpleName()应该调用哪个类。所以你应该声明一个带ClassManifest绑定的类型参数,并且应该自动添加一个适当类型的隐式参数[T](model: T)(implicit evidence$1: ClassManifest[T])

于 2012-12-10T22:42:51.287 回答