Consultas
Notas obtenidas en
http://blog.lunatech.com
package models.database
import play.api.db.slick.Config.driver.simple._
class Cocktails extends Table[(Long, String)]("COCKTAIL") {
def id = column[Long]("ID")
def name = column[String]("NAME")
def * = id ~ name
}
Habitualmente, una tabla se define con object, no con class
Una consulta se define así
val query = Query(new Cocktails).map(_.name)
pero la consulta no se ejecuta hasta que se intenta acceder a los resultados. En ese momento se lleva a cabo la conexión con la base de datos
val names: List[String] = query.list
.
El código anterior provoca un error, debido a que en este momento se necesita una conexión a la base de datos, que será suministrada por scala.slick.session.Session. El método list necesita una sesión, como parámetro implicito de tipo Sesion
import play.api.Play.current
val names = play.api.db.slick.DB.withSession {
implicit session: scala.slick.session.Session =>
Query(Cocktail.table).map(_.name).list
}
Las consultas se llevan a cabo de dos modos: mediante for-comprehensions o mediante map/flatMap. Siempre deben envolverse en el alcance de una sesión. Hay que distinguir entre la definición de la consulta y la ejecución de la mima, con acceso a la base de datos, envuelta en una sesión
No hay comentarios:
Publicar un comentario