假设我有以下特点。
trait ModelTrait{
def id: Option[Long]
def name: String
}
我有两张table。它们的case类和tablequery字段如下所示。
val modelOneTable = TableQuery[ModelOnes]
val modelTwoTable = TableQuery[ModelTwos]
case class ModelOne(id: Option[Long], name: String) extends ModelTrait
case class ModelTwo(id: Option[Long], name: String) extends ModelTrait
我想创建一个函数,根据它的输入返回一个tablequery字段。像这样:
def getTableQuery(which: String): TableQuery[Table[ModelTrait]] = {
which match {
case "One" => modelOneTable
case _ => modelTwoTable
}
请注意 modelOneTable
是 TableQuery[ModelOnes]
. 这个 ModelOnes
(带s)类扩展 Table[ModelOne]
. 这对我来说是一样的 ModelTwo
. 因此函数返回 TableQuery[Table[ModelTrait]]
.
class ModelOnes(tag: Tag) extends Table[ModelOne](tag, "modelOnes") {
// ...
}
class ModelTwos(tag: Tag) extends Table[ModelTwo](tag, "modelTwos") {
// ...
}
但是我的case语句中出现了类型不匹配错误。有人能帮忙吗?
1条答案
按热度按时间eagi6jfj1#
您需要为其他字符串指定case子句: