从Play 2.5中的Slick开始(scala)

时间:2016-10-05 18:23:26

标签: scala playframework slick

我刚刚开始使用Play Scala(从Anorm过渡)深入研究Slick并立即面对查询的启动问题。

我有一个如下定义的表类:

package model

import slick.driver.PostgresDriver.api._
import slick.lifted.{TableQuery, Tag}

case class ApiKey(id: Option[Int] = None, key: String)

object ApiKeys {
  val apiKeys: TableQuery[ApiKeys] = TableQuery[ApiKeys]
}

class ApiKeys(tag: Tag) extends Table[ApiKey](tag, "api_key"){
  def id = column[Int]("id", O.PrimaryKey, O.AutoInc) // This is the primary key column
  def key = column[String]("key")

  override def * = (id.?, key) <> (ApiKey.tupled, ApiKey.unapply)
}

注意:该表已在db

中创建

在控制器中,对于试用版,我试图插入值:

def index = Action {
    db.withConnection { implicit connection =>
      ApiKeys.apiKeys += ApiKey(key = "boo")
    }

    Ok("hello")
  }

在这里我收到一个错误:

  

value + =不是slick.lifted的成员.TableQuery [model.ApiKeys]

但是,我正在阅读的所有文档都建议这样做。 其中一个示例:https://github.com/typesafehub/activator-hello-slick/blob/master/src/main/scala/CaseClassMapping.scala

我错过了什么?

1 个答案:

答案 0 :(得分:0)

尝试在要使用它的控制器中导入import driver.api._。对我来说这可行:

def test = Action {
  import driver.api._
  db.run(ApiKeys.apiKeys += ApiKey(key = "boo"))

  Ok("Hallo")
}

尽管将查询全部放入Dao中有很多帮助,但DB-Config仍保留在应用程序的某些部分。