1

如何使用 Slick 返回映射对象?使用以下代码,我的查询返回 List[(Int, String)] 而不是我想要的 List[Task]。这不可能使用 Slick 还是我以错误的方式思考 Slick 不是 ORM 吗?我正在尝试使用 Play2 框架返回查询并在视图模板中使用它。我想最终访问 task.id task.label 等对象......谢谢。

import play.api.Play.current
import play.api.db._
import scala.slick.driver.H2Driver.simple._

case class Task(id: Int, label: String)

object Task extends Table[(Int, String)]("TASKS") {

  lazy val database = Database.forDataSource(DB.getDataSource())

  def id = column[Int]("ID", O.PrimaryKey, O.AutoInc)

  def label = column[String]("LABEL")

  def * = id ~ label

  def all() : List[Task] = database.withSession { implicit db: Session =>
    Query(Task).list
  }
}
4

1 回答 1

0

问题在于您如何定义表格。尝试将表定义更改为:

case class Task(id: Int, label: String)
object Task extends Table[Task]("TASKS") {
  lazy val database = Database.forDataSource(DB.getDataSource())
  def id = column[Int]("ID", O.PrimaryKey, O.AutoInc)
  def label = column[String]("LABEL")
  def * = id ~ label <> (Task.apply _, Task.unapply _)
  def all() : List[Task] = database.withSession { implicit db: Session =>
    Query(Task).list
  }
}

不同之处在于我传递给的类型参数TableTask而不是(Int, String). 这应该可以解决您的问题。

于 2013-07-10T20:09:27.157 回答