/ / Kann nicht glatt machen 3.2 Mapped Tabelle Beispiel arbeiten - Scala, Slick, Slick-3.0

Kann nicht glatt machen 3.2 Mapped Tabelle Beispiel arbeiten - Scala, Slick, Slick-3.0

Ich versuche nur, ein "User" -Beispiel zu erstellen (http://slick.lightbend.com/doc/3.2.0/schemas.html#mapped-tables), aber es kompiliert nicht.

Da ich auf MySQL abzielte, fügte ich folgende Importe hinzu:

import slick.jdbc.MySQLProfile.Table
import slick.jdbc._
import slick.lifted._

Das hat auch nicht kompiliert, ich habe viele Fehler wie

Error:(16, 23) could not find implicit value for parameter tt: slick.ast.TypedType[Int]
def id = column[Int]("id", O.PrimaryKey, O.AutoInc)

Nachdem ich nach Implikationen gesucht hatte, fügte ich hinzu with MySQLProfile.ImplicitColumnTypes zum Users Klasse erweitert Table:

class Users(tag: Tag) extends Table[User](tag, "users") with MySQLProfile.ImplicitColumnTypes

Jetzt bin ich dran

Error:(19, 15) value ? is not a member of slick.lifted.Rep[Int]
def * = (id.?, first, last) <> (User.tupled, User.unapply _)

<> wird auch nicht gefunden.

Sie werden es vielleicht bemerken User.unapply _ Anstatt von User.unapply wie in doc angegeben; aber der Compiler beklagte sich mit User.unapply

Was mache ich falsch? Warum ist der Doktor so unklar?

Antworten:

1 für die Antwort № 1

Der Code importiert slick.jdbc.MySQLProfile.Table aber stattdessen muss es die ganze API einbringen:

import slick.jdbc.MySQLProfile.api._

Das wird dir die Implikate geben, nach denen du gesucht hast, und der Code sollte kompilieren.


BTW: Die Slick-Beispiele sind kompiliert

Zufällig werden die Slick-Manual-Beispiele kompiliert. Dies bedeutet, dass Sie zum Code gelangen können, um zu sehen, ob dort zusätzliche Details vorhanden sind.

Wenn Sie zum Beispiel für die Seite, mit der Sie verlinkt haben, nach oben blättern, gibt es einen Link "Diese Seite auf GitHub bearbeiten" die Quelle und darin finden Sie einen Verweis auf die Scala-Quelle:

.. includecode:: code/LiftedEmbedding.scala#mappedtable

... und diese Datei befindet sich auch in GitHub: LiftedEmbedding.scala

Ein bisschen langatmig, aber nützlich manchmal zu wissen, die Beispiele sind kompiliert und Sie können sie finden.

Die Details, wie dies geschieht, sind gerade dabei, zu einem anderen System zu wechseln, aber die Prinzipien sollten gleich bleiben. Die Details (Dateinamen, Import-Syntax) oben sind unterschiedlich.