Selezionare una singola riga con id dovrebbe essere una cosa semplice da fare, tuttavia ho un po 'di problemi a capire come mapparlo al mio oggetto.Chiazza la riga di selezione per id
Ho trovato this question che sta cercando la stessa cosa ma la risposta data non funziona per me.
Attualmente ho questo che funziona, ma non sembra elegante come dovrebbe essere.
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
}
mi sento ottenere una lista poi prendendo headOption
è solo ingombrante e inutile. Devo mancare qualcosa.
Se serve, qui è più del mio codice categoria
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 _)
...
}
C'è un modo più semplice per ottenere solo un opzione [T] da un ID utilizzando Slick?
Soluzione Si è verificato un problema con il driver. Non ho potuto usare .firstOption
ma aggiornato a mysql jdbc 5.1.25 e tutto va bene!
Se utilizzo la prima soluzione che hai postato ottengo' errore nella sintassi SQL vicino' OPTION SQL_SELECT_LIMIT = DEFAULT'' – kingdamian42
Potrebbe esserci un problema con il driver. Dai un'occhiata a http://stackoverflow.com/questions/15113707/error-code-1064-sql-state-42000-you-ha-err-inor-in-your-sql-syntax – Nilanjan
Aggiornato a '" mysql " % "mysql-connector-java"% "5.1.25" '. Funziona alla grande, grazie! – kingdamian42