Essayons-moi de faire la lumière :). Lorsque vous avez ResultSet
, vous devez avoir un type auquel vous mappez les ensembles de résultats. Par exemple. un tuple ou une classe de cas qui tiendra votre rang. Dans le cas d'une classe personnalisée (case), vous devrez fournir un implicit
GetResult
qui décrit comment mapper d'un jdbc ResultSet
à votre classe. L'argument à .list
devrait être une valeur que vous voulez Slick mettre dans l'espace réservé de votre instruction préparée, pas quelque chose que vous obtenez notre ResultSet
(en supposant que c'est ce que rs
signifie).
L'utilisation suggérée est quelque chose comme ceci:
import scala.slick.jdbc.{GetResult, StaticQuery}
import StaticQuery.interpolation
val price = 1000.0
// use tuples
val expensiveDevices: List[Device] =
Q.query[String, (Long,Double,Date)]("select * from DEVICE where PRICE > ?").list(price)
// or a case class (needs implicit GetResult for Device)
case class Device(id: Long,price: Double,acquisition: Date)
implicit val getDeviceResult =
GetResult(r => Device(r.<<, r.<<, r.<<))
val expensiveDevices2: List[Device] =
Q.query[String, Device]("select * from DEVICE where PRICE > ?").list(price)
// or the even nicer interpolation syntax
val expensiveDevices3: List[Device] =
sql"select * from DEVICE where PRICE > $price" .as[Device].list