Frage

beim Löschen aus meinem Tablequery-Objekt sollte ich schreiben können:

FacebookAuths.delete

Aber es beschwert sich, dass delete keine Methode in TableQuery ist, selbst wenn ich es versuche:

Users.filter(_.id === 1337).delete

Es heißt immer noch, dass delete keine Methode ist, sondern jetzt für das Abfrageobjekt.

Was mache ich falsch?Meine Importe sind:

import scala.slick.lifted._
import scala.slick.driver.JdbcDriver.simple._

Und alle anderen Dinge wie firstOption funktionieren.

Ich benutze Postgres.

Danke!

War es hilfreich?

Lösung

Du verwendest Postgres, also musst du import scala.slick.driver.PostgresDriver.simple._ und scala.slick.driver.PostgresDriver anstelle der jdbc das Gleiche gilt für den Ort, an dem Ihr Schema definiert ist.

Bearbeiten:

Das ist ein bisschen außerhalb meines Wissens und ich bin mir nicht 100% sicher, aber ich werde es versuchen.

Der PostgresDriver eigenschaft erweitert die JdbcDriver merkmal (von JdbcProfile.scala), dies ist die Eigenschaftssignatur:

trait PostgresDriver extends JdbcDrive

und der Reihe nach JdbcDriver erweitern SqlDriver:

trait JdbcDriver extends SqlDriver

Der firstOption methode gehört zu den UnitInvoker eigenschaft, also ist es nicht abhängig von den importierten Treibern, das gleiche gilt für list und first und andere Methoden, Sie können sie einchecken Invoker.scala Datei.Der delete methode ist stattdessen in der definiert DeleteInvoker klasse innerhalb der JdbcInvokerComponent Merkmal.

Mein Verständnis ist, dass bei der Deklaration eines TableQuery objekt dies ist die vollständige Signatur:

val table: PostgresDriver.simple.TableQuery[MyTable] = TableQuery[MyTable]

Während Sie eine Tabelle mit dieser Signatur deklarieren:

val table: JdbcDriver.simple.TableQuery[MyTable] = TableQuery[MyTable]

Ich weiß nicht, warum die delete methode ist nicht verfügbar für Jdbc direkt, wahrscheinlich müssen Sie verwenden Query dafür und dann benutze Query.deleteInvoker, aber wie gesagt, ich bin mir nicht sicher, es sieht auch für mich verwirrend aus.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top