光滑2:使用播放框架在光滑中删除行

时间:2014-06-27 20:54:00

标签: scala playframework-2.0 slick

这个要求应该很简单,但我不知道为什么不起作用。我想使用带有播放框架的光滑删除基于它的id的行。

我在play-slick module中关注此示例,但编译器抱怨值delete不是scala.slick.lifted.Query [models.Tables.MyEntity,models.Tables.MyEntity#TableElementType]的成员。

我的控制器如下:

def delete(id: Int) = DBAction{ implicit rs =>
  val q = MyEntity.where(_.id === id)
  q.delete
  Ok("Entity deleted")
}

我已导入play.api.db.slick.Config.driver.simple ._

我做错了什么?

编辑:

我的架构定义如下:

class Cities(tag: Tag) extends Table[CityRow](tag, "cities") {
def * = (cod, name, state, lat, long, id) <> (CityRow.tupled, CityRow.unapply)
/** Maps whole row to an option. Useful for outer joins. */
def ? = (cod.?, name.?, state.?, lat, long, id.?).shaped.<>({r=>import r._; _1.map(_=>    CityRow.tupled((_1.get, _2.get, _3.get, _4, _5, _6.get)))}, (_:Any) =>  throw new Exception("Inserting into ? projection not supported."))

val cod: Column[String] = column[String]("cod")
val name: Column[String] = column[String]("name")
val state: Column[Int] = column[Int]("state")
val lat: Column[Option[String]] = column[Option[String]]("lat")
val long: Column[Option[String]] = column[Option[String]]("long")
val id: Column[Int] = column[Int]("id", O.AutoInc, O.PrimaryKey)

/** Foreign key referencing Departamentos (database name fk_ciudades_departamentos1) */
lazy val stateFk = foreignKey("fk_cities_states", state, States)(r => r.idstate, onUpdate=ForeignKeyAction.NoAction, onDelete=ForeignKeyAction.NoAction)
}

1 个答案:

答案 0 :(得分:4)

我前段时间也看过那个例子,我看起来也不对,不确定我自己做错了什么,删除功能总是有点棘手,特别是使用{ {1}}(就像你一样)。在此过程的后期,我根据我的情况lifted.Query导入了正确的驱动程序。

评论后编辑:

可能你在形状函数中有一个错误,很难说没有查看你的模式声明。这是一个例子:

scala.slick.driver.PostgresDriver.simple._