我想在我的应用中重用代码,
例如,具有这样的功能
def getA1(idUser: Option[Long]) = {
val q = A1Q.filter(_.idUser === idUser.get)
Await.result(db.run(q.result), Duration.Inf)
}
def getA2[T](idUser: Option[Long]) = {
val q = A2Q.filter(_.idUser === idUser.get)
Await.result(db.run(q.result), Duration.Inf)
}
def getAn(idUser: Option[Long]) = {
val q = AnQ.filter(_.idUser === idUser.get)
Await.result(db.run(q.result), Duration.Inf)
}
A1Q的类型为TableQuery
和' q'类型Query[TA1Q, TA1Q#TableElementType, scala.Seq]
试图使用泛型来解决当前问题,比如这个
def execQ[T](q: Query[T, T, scala.Seq]) = Await.result(db.run(q.result), Duration.Inf)
但类型错误,
我如何通用Query[TA1Q, TA1Q#TableElementType, scala.Seq]
?以正确的方式准备一些像
def execQ[T](q: Query[T, T, scala.Seq]) = Await.result(db.run(q.result), Duration.Inf)
BR!
答案 0 :(得分:0)
您需要两个类型参数:
第一个C,它是您的实体,因此是您查询的返回类型。 第二个T是你的实体表,因此扩展了表[C]。
def execQ[C,T <: Table[C]](q: Query[T, C, scala.Seq]) = Await.result(db.run(q.result), Duration.Inf)