ID で 1 つの行を選択するのは簡単なはずですが、これをオブジェクトにマップする方法を理解するのに少し苦労しています。
同じものを探しているこの質問を見つけましたが、与えられた答えは私にはうまくいきません。
現在、これは機能していますが、本来あるべきほどエレガントではないようです。
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
}
headOption
リストを取得してから取得するのは、かさばって不必要だと思います。私は何かが欠けているに違いない。
それが役立つ場合は、ここに私のカテゴリコードがもっとあります
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 _)
...
}
Slick を使用して ID から Option[T] を取得する簡単な方法はありますか?
解決法ドライバーに問題がありました。使用できませんでし.firstOption
たが、mysql jdbc 5.1.25 にアップグレードしました。