Предположим, у меня есть следующая черта:
trait ModelTrait{
def id: Option[Long]
def name: String
}
И у меня есть две таблицы.Их классы 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.Кто-нибудь может помочь?