这个要求应该很简单,但我不知道为什么不起作用。我想使用带有播放框架的光滑删除基于它的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)
}
答案 0 :(得分:4)
我前段时间也看过那个例子,我看起来也不对,不确定我自己做错了什么,删除功能总是有点棘手,特别是使用{ {1}}(就像你一样)。在此过程的后期,我根据我的情况lifted.Query
导入了正确的驱动程序。
评论后编辑:
可能你在形状函数中有一个错误,很难说没有查看你的模式声明。这是一个例子:
scala.slick.driver.PostgresDriver.simple._