如何使用Slick返回映射對象?使用下面的代碼,我的查詢返回List [(Int,String)],而不是像我想要的List [Task]。使用Slick是不可能的,或者我是否以錯誤的方式思考Slick?它不是ORM嗎?我試圖返回一個查詢,並在使用Play2框架的視圖模板中使用它。我想最終訪問像task.id task.label等對象...謝謝。使用Slick返回映射對象
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
}
}
請注意,如果將表單中的單例對象放置在靜態位置(包或其他單例對象)中,則可能導致Slick 1.x出現問題。爲了安全起見,可以使用class和vals,或者將singleton對象放在classes/traits中作爲成員。 – cvogt
@cvogt我以前沒有聽說過這個,我見過的大多數示例都使用單例。你能提供一個關於爲什麼應該避免的更多信息的鏈接嗎? –
相應的斯卡拉bug報告https://issues.scala-lang.org/browse/SI-3764 – cvogt