3
votes

For some reason, in my case, even the simple Slick table declaration is not working. I am using slick 2.10 (1.0.0), which is the latest from the maven central repository.

case class DeviceType(id: Option[Int] = None, name: String, version: String)

object DeviceTypes extends Table[DeviceType]("device_types") {

  def id = column[Int]("id", O.PrimaryKey, O.AutoInc)
  def name = column[String]("name", O.NotNull)
  def version = column[String]("version")

  def * = id.? ~ name ~ version <> (DeviceType, DeviceType.unapply _)


  def delete(device_type: DeviceType): Unit = {
database withSession { implicit session : Session =>
  val dt_query = for(dt <- DeviceTypes if dt.id == device_type.id.get) yield dt
    //Query(DeviceTypes).filter(_.id == device_type.id.get)
  dt_query.delete
}
  }
}

[warn] /home/salil/Scala/sd_ventures/app/models/DeviceType.scala:38: scala.slick.lifted.Column[Int] and Int are unrelated: they will most likely never compare equal
[warn]       val dt_query = for(dt <- DeviceTypes if dt.id == device_type.id.get) yield dt
[warn]                            ^

And if I use Query class directly, I get the same warning:
[warn] /home/salil/Scala/sd_ventures/app/models/DeviceType.scala:38: scala.slick.lifted.Column[Int] and Int are unrelated: they will most likely never compare equal
[warn]       val dt = Query(DeviceTypes).filter(_.id == device_type.id.get)
[warn]                                               ^

Can someone tell me why it is not working?

1

1 Answers

11
votes

In Slick you have to use "===" to test equality.

val dt_query = for(dt <- DeviceTypes if dt.id === device_type.id.get) yield dt

Ref : at the bottom of http://slick.typesafe.com/doc/1.0.0/gettingstarted.html