2016-10-05 4 views
0

Ich beginne gerade in Slick mit Play Scala zu graben (Übergang von Anorm) und sofort Startprobleme mit Abfragen konfrontiert.Starten mit Slick in Play 2.5 (Scala)

Ich habe eine Tabellenklasse wie folgt definiert:

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

Hinweis: In der Tabelle bereits in db

In Controller erstellt wird, für Versuch, ich versuche Wert einzufügen:

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

    Ok("hello") 
    } 

In hier erhalte ich eine Fehlermeldung:

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

Alle Dokumente, die ich lese, schlagen genau das vor. Eines der Beispiele hier: https://github.com/typesafehub/activator-hello-slick/blob/master/src/main/scala/CaseClassMapping.scala

Was fehlt mir?

Antwort

0

Versuchen Sie mit dem Import import driver.api._ in den Controller, wo Sie es verwenden möchten. Für mich funktionieren würde:

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

    Ok("Hallo") 
} 

Auch wenn es viel setzen die Abfragen alle in Dao hilft, so dass die DB-Config in bestimmten Teilen der Anwendung bleibt.

Verwandte Themen