Play Framework:无法使用SLICK编写findById函数

时间:2013-04-28 19:06:13

标签: scala playframework slick

我正在尝试为使用SLICK创建的模型编写findById(pk:Long)和update()函数。但是在我的findById方法中,它返回一个编译错误“值过滤器不是对象models.About的成员”,并在findById方法中突出显示模型名称About。

    package models

//import scala.slick.driver.PostgresDriver.simple._
import play.api.db.slick.Config.driver._


case class About(
    id:Option[Long],
    name: String, 
    subheading: String, 
    about: String
)

object About extends Table[About]("about"){
    def id = column[Long]("id", O.PrimaryKey, O AutoInc) 
    def name = column[String]("name")
    def subheading = column[String]("subheading")
    def about = column[String]("about")

    def * = id.? ~ name ~ subheading ~ about <> (About.apply _, About.unapply _)

    def update(id: Long, about: About)(implicit session: Session) = findById(id).update(about)

    def findById(pk: Long) =
        for (a <- About if a.id === pk) yield a

}

2 个答案:

答案 0 :(得分:3)

将findById替换为:

def findById(pk: Long) =
    for (a <- Query(About) if a.id === pk) yield a

也许您必须在驱动程序导入下添加import simple._

答案 1 :(得分:1)

此外,您也可以使用此方法:

def findById(id: Int) = {
    byId(id).list.headOption
}

import scala.slick.jdbc.{ GetResult, StaticQuery }