我刚刚开始使用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
我错过了什么?
答案 0 :(得分:0)
尝试在要使用它的控制器中导入import driver.api._
。对我来说这可行:
def test = Action {
import driver.api._
db.run(ApiKeys.apiKeys += ApiKey(key = "boo"))
Ok("Hallo")
}
尽管将查询全部放入Dao中有很多帮助,但DB-Config仍保留在应用程序的某些部分。