Consultas Slick

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