#scala #playframework #slick
#scala #игровая фреймворк #slick
Вопрос:
Я только начинаю копаться в Slick с Play Scala (переход с Anorm) и сразу же сталкиваюсь с проблемами при запуске с запросами.
У меня есть класс таблицы, определенный следующим образом:
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)
}
Примечание: таблица уже создана в БД
В контроллере, для пробной версии, я пытаюсь вставить значение:
def index = Action {
db.withConnection { implicit connection =>
ApiKeys.apiKeys = ApiKey(key = "boo")
}
Ok("hello")
}
Здесь я получаю сообщение об ошибке:
значение = не является членом slick.lifted .Запрос таблицы[модель.ApiKeys]
Однако все документы, которые я читаю, предлагают сделать именно это. Один из примеров здесь: https://github.com/typesafehub/activator-hello-slick/blob/master/src/main/scala/CaseClassMapping.scala
Чего мне не хватает?
Ответ №1:
Попробуйте импортировать import driver.api._
в контроллер, где вы хотите его использовать. Для меня это сработало бы:
def test = Action {
import driver.api._
db.run(ApiKeys.apiKeys = ApiKey(key = "boo"))
Ok("Hallo")
}
Несмотря на то, что это очень помогает, помещая все запросы в Dao, так что DB-Config остается в определенных частях приложения.