我正在尝试为使用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
}
答案 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 }