Die Auswahl einer einzelnen Zeile nach ID sollte eine einfache Sache sein, aber ich habe ein wenig Mühe herauszufinden, wie ich das auf mein Objekt abbilden kann.
Ich fand diese Frage , die auf der Suche ist Das Gleiche, aber die gegebene Antwort funktioniert nicht für mich.
Momentan habe ich das, das funktioniert, aber es scheint nicht so elegant wie es sein sollte.
%Vor% Ich habe das Gefühl, eine Liste zu bekommen, dann ist headOption
nur sperrig und unnötig. Ich muss etwas verpassen.
Wenn es hilft, hier ist mehr von meinem Kategoriecode
%Vor%Gibt es einen einfacheren Weg, um einfach eine Option [T] von einer ID mit Slick zu bekommen?
Lösung Es gab ein Treiberproblem. Ich konnte nicht .firstOption
verwenden, aber auf mysql jdbc 5.1.25 aktualisiert und alles ist gut!
Sie können dies tun:
%Vor% Wenn Sie diese Abfrage häufig verwenden, sollten Sie QueryTemplate
:
val byId = t.createFinderBy( t => t.id )
Dadurch wird eine vorkompilierte vorbereitete Anweisung erstellt, die Sie mit Ihrer Methode verwenden können
def getSingle(id: Long):Option[Category] = byId(id).firstOption
Ich benutze slick 1.0.1 mit Play 2.2.1 und die folgenden Arbeiten für mich.
%Vor%Rufen Sie es dann von einer Methode auf.
%Vor%Bitte beachten Sie, dass DB.withSession eine Methode aus dem play-Framework ist.
Wenn Sie Play nicht verwenden, ist die Methode wie folgt:
%Vor%