1

我正在尝试为我使用 SLICK 创建的模型编写 findById(pk: Long) 和 update() 函数。但是,在我的 findById 方法中,它说返回“值过滤器不是对象模型的成员。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

}
4

2 回答 2

3

将您的 findById 替换为:

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

也许您将不得不import simple._在驱动程序导入下添加。

于 2013-04-28T19:48:21.413 回答
1

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

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

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

于 2013-04-29T08:11:16.733 回答