通过 id 选择单行应该是一件简单的事情,但是我在弄清楚如何将其映射到我的对象时遇到了一些麻烦。
我发现这个问题正在寻找相同的东西,但给出的答案对我不起作用。
目前我有这个正在工作,但它似乎并不像它应该的那样优雅。
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 一切都很好!