2016-10-05 2 views
0

Я только начинаю копаться в Slick с Play Scala (переход от Anorm) и сразу же сталкиваться с проблемами при запуске с запросами.Начиная с Slick in Play 2.5 (scala)

У меня есть класс таблицы определяется следующим образом:

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") 
    } 

В здесь я получаю сообщение об ошибке:

value += is not a member of slick.lifted.TableQuery[model.ApiKeys]

Однако все документы, которые я читаю, предлагают сделать именно это. Один из примеров здесь: https://github.com/typesafehub/activator-hello-slick/blob/master/src/main/scala/CaseClassMapping.scala

Что мне не хватает?

ответ

0

Попробуйте импортировать import driver.api._ в контроллер, где вы хотите его использовать. Для меня это будет работать:

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

    Ok("Hallo") 
} 

Несмотря на то, что это помогает много кладя запросы все в Дао, так что DB-Config остается в некоторых частях приложения.