Die Auswahl einer einzelnen Zeile nach ID sollte eine einfache Sache sein, aber ich habe ein wenig Mühe herauszufinden, wie man dies auf mein Objekt abbildet.Slick Zeile nach ID auswählen
Ich fand this question, die für das gleiche Ding sucht, aber die gegebene Antwort funktioniert nicht für mich.
Derzeit habe ich das, das funktioniert, aber es scheint nicht so elegant, wie es sein sollte.
def getSingle(id: Long):Option[Category] = withSession{implicit session =>
(for{cat <- Category if cat.id === id} yield cat).list.headOption
//remove the .list.headOption and the function will return a WrappingQuery
}
Ich fühle mich dann eine Liste bekommen headOption
nehmen nur sperrig und unnötig. Ich muss etwas verpassen.
Wenn es hilft, ist hier mehr meiner Kategorie Code
case class Category(
id: Long = 0L,
name: String
)
object Category extends Table[Category]("categories"){
def name = column[String]("name", O.NotNull)
def id = column[Long]("id", O.PrimaryKey, O.AutoInc)
def * = id ~ name <> (Category.apply _, Category.unapply _)
...
}
Gibt es eine einfachere Möglichkeit, nur eine Option [T] von einer ID erhalten Slick mit?
Lösung Es gab ein Treiberproblem. Ich konnte nicht .firstOption
verwenden, aber auf mysql jdbc 5.1.25 aktualisiert und alles ist gut!
Wenn ich die erste Lösung, die Sie veröffentlicht habe, bekomme ich' Fehler in SQL-Syntax in der Nähe' OPTION SQL_SELECT_LIMIT = DEFAULT'' – kingdamian42
Könnte ein Treiberproblem sein. Werfen Sie einen Blick auf http://stackoverflow.com/questions/15113707/error-code-1064-sql-state-42000-you-have-an-error-in-your-sql-syntax – Nilanjan
Auf "mysql" aktualisiert % "mysql-connector-java"% "5.1.25" '. Funktioniert super, danke! – kingdamian42