mit einer Klasse und Tabellendefinition aussehen wie diese Aktualisierung:Ärger einen Datensatz mit Slick
case class Group(
id: Long = -1,
id_parent: Long = -1,
label: String = "",
description: String = "")
object Groups extends Table[Group]("GROUPS") {
def id = column[Long]("ID", O.PrimaryKey, O.AutoInc)
def id_parent = column[Long]("ID_PARENT")
def label = column[String]("LABEL")
def description = column[String]("DESC")
def * = id ~ id_parent ~ label ~ design <> (Group, Group.unapply _)
def autoInc = id_parent ~ label ~ design returning id into {
case ((_, _, _), id) => id
}
}
einen Datensatz zu aktualisieren, kann ich dies tun:
def updateGroup(id: Long) = Groups.where(_.id === id)
def updateGroup(g: Group)(implicit session: Session) = updateGroup(g.id).update(g)
Aber ich kann nicht Updates Verwendung für Ausdrücke zu arbeiten:
val findGById = for {
id <- Parameters[Long]
g <- Groups; if g.id === id
} yield g
def updateGroupX(g: Group)(implicit session: Session) = findGById(g.id).update(g)
----------------------------------------------------------------------------^
Error: value update is not a member of scala.slick.jdbc.MutatingUnitInvoker[com.exp.Group]
fehlt mir natürlich etwas in the documentation.
Eine gute Erklärung, warum es nicht funktioniert, aber es scheint mir, dass es eine [Einschränkung des Slick-Framework] ist (https://github.com/slick/slick/issues/102). Die Tatsache, dass BasicQueryTemplate nicht so reich ist wie Query, scheint es unmöglich zu machen, Abfragen mit Parametern und sortBy oder groupBy zwischenzuspeichern. –