按照我之前的post(以及其中一条评论),我试图丰富类(扩展Table
)(来自Slick)并添加
val tenantId: Column[Int] = column[Int]("tenant_id")
我有
class RichT[T, Q <: Table[T]](t: Q) {
implicit def toRich= {
val tenantId: Column[Int] = t.column[Int]("tenant_id")
}
}
和
implicit def table2RichTable[T, Q <: Table[T]](t: Q) = new RichT[T, Q](t)
在尝试编写类似跟随它的通用函数时仍然无法为传递的tenantId
找到T
(在编译时失败)告诉我隐式转换不是&n工作。我必须在隐含中遗漏一些愚蠢的东西?
def selectById[T, Q <: Table[T]](t: Q, e: TableQuery[Q], id: Int)(implicit s: Session) = {
e.filter(_.tenantId === id)
}
更新
object RichTable {
implicit class RichT[T, Q <: Table[T]](t: Q) {
val tenantId: Column[Int] = t.column[Int]("tenant_id")
}
}
import RithTable._
def selectById[T, Q <: Table[T]](t: Q, e: TableQuery[Q], id: Int)(implicit s: Session) = {
e.filter(_.tenantId === id)
}
错误value tenantId is not a member of type parameter Q.
答案 0 :(得分:2)
也许你应该只是:
implicit class RichT[Q <: Table[_]](t: Q) {
val tenantId: Column[Int] = t.column[Int]("tenant_id")
}