如何使用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
}
}
答案 0 :(得分: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
}
}
不同之处在于我传递给Table
的类型参数是Task
而不是(Int, String)
。这应该可以解决您的问题。