¿Cómo definir el tipo genérico en Scala?
En Slick 2, podemos mapear tablas como esta:
case class Cooler(id: Option[Int], minTemp: Option[Double], maxTemp: Option[Double])
/**
* Define table "cooler".
*/
class Coolers(tag: Tag) extends Table[Cooler](tag, "cooler") {
def id = column[Int]("id", O.PrimaryKey, O.AutoInc)
def minTemp = column[Double]("min_temp", O.Nullable)
def maxTemp = column[Double]("max_temp", O.Nullable)
def * = (id.?, minTemp.?, maxTemp.?) <> (Cooler.tupled, Cooler.unapply _)
}
object Coolers {
val tableQuery = TableQuery[Coolers]
}
porque tengo muchas tablas, quiero definir métodos genéricos para ellas, comofind
, delete
, update
así que tengo que definir estos métodos en una súper clase desde donde extender mis objetos (object Coolers extends TableUtils[Coolers, Cooler]
). Para definir esos métodos, necesitotableQuery
para salir de mi objeto en esta súper clase, así que lo intenté como:
abstract class TableUtils[T <: Table[A] , A] {
val tableQuery = TableQuery[T]
}
pero recibo un error entableQuery
definición:
class type required but T found
¿Alguien sabe lo que estoy haciendo mal?