Aktuelle Frage ist relativ mit next one, aber jetzt muss ich die Daten aus der Datenbank anstelle von einfügen lesen.slick 3 zwei leftJoin Abfrage Ergebnis zu Klassen Zuordnung
Ich habe nächste drei Fallklassen:
case class A (id: Long, bList: List[B])
case class B (id: Long, aId: cList: List[C])
case class C (id: Long, bId: Long)
Und Abfrage mit zwei leftJoin
Funktionen und incomingAId
zum Filtern aTable Ergebnisse:
val query = (for {
((aResult,bResult),cResult) <- aTable.filter(_.id === incomigAId)
.joinLeft(bTable).on(_.id === _.aId)
.joinLeft(cTable).on(_._2.map(_.id) === _.bId)
} yield ((aResult,bResult),cResult)).result.transactionally
Nächste Abfrage funktioniert und das Ergebnis sieht gültig, aber isn‘ t einfach zu handhaben, um die Fallklassen. Auch hat executionResult
Seq[Nothing]
Art und den Prozess der Zuordnung erfordert etwas wie folgt aus:
database.run(query).map{ executionResult =>
executionResult.map { vectorElement: [Tuple2[Tuple2[A, Option[B]], Option[C]]]
...
}
}
Gibt es eine richtige Art und Weise Seq [Nichts] (Änderungen in Abfrage) zu verhindern? Oder, wenn der Abfrageergebnis-Typ in Ordnung ist, können Sie die Lösung teilen, wie Sie sie den oben genannten Fallklassen zuordnen?