根据DRY,我试图避免在Slick表定义中插入和更新逻辑的重复。我尝试这样做:slick reusable InsertAndUpdate trait
trait Entity {
def id: Option[Int]
}
case class BankRekening(id: Option[Int], nummer: String, omschrijving: String) extends Entity{
}
object BankRekeningen extends Table[BankRekening]("bankrekening") with InsertAndUpdate[BankRekening] {
def id = column[Int]("id", O.PrimaryKey, O.AutoInc)
def nummer = column[String]("nummer")
def omschrijving = column[String]("omschrijving")
def * = id.? ~ nummer ~ omschrijving <> (BankRekening, BankRekening.unapply _)
def idx_nummer = index("idx_nummer", nummer, unique = true)
}
trait InsertAndUpdate[T <: Entity] {
this: Table[T] =>
def id: scala.slick.lifted.Column[Int]
def insert(obj: T): T = {
obj.copy(id = Some(this.returning(this.id) insert obj))
}
}
现在,编译器抱怨在最后陈述“OBJ”,他说:找不到类型scala.slick.lifted.TypeMapper的证据参数内含价值[T]
有任何想法吗?
只是一个预感,但你是否已经导入了'scala.slick.driver。 .simple._'? –
华夫悖论,是的,他有哪些是“问题”的中间原因(最终导致Scalac产生误导性错误信息)。 – cvogt