Help with parameterized types and Squeryl

I have a Model class which I use to define a few common fields, methods
and other behaviors. I define it like so:

trait Model[OwnerType <: Record[OwnerType]] extends KeyedEntity[String] {
self: OwnerType =>

def table: Table[OwnerType]

object id extends StringField(this.asInstanceOf[OwnerType], 36) {
override def defaultValue = newID
}

...

def save = {
if(isPersisted)
table.update(this)
else
table.insert(this)
true
}

def delete_! = table.deleteWhere(_.id === id)

}

When I try compiling that, though, I get:

[error]
/home/nolan/Projects/Therascribe/sql/src/main/scala/code/model/model.scala:30:
Cannot prove that OwnerType <:< org.squeryl.KeyedEntity[_].
[error] table.update(this)
[error] ^

Same with the delete_! method.

How do I tweak my parameterized types to fix this? I have a hard time
wrapping my head around that aspect of Scala.

Copyright © 2013 École Polytechnique Fédérale de Lausanne (EPFL), Lausanne, Switzerland