Die folgende Funktion funktionieren gut, aber ich mag es die Ergebnisse zuerst von parent_id sortieren und dann nach Bestellung.Sortierung Slick Abfrage-Ergebnisse in einem für den Ausdruck
def getTree = for {
(a, c) <- Activities leftJoin Clients on (_.id === _.id_a)
} yield (a.id, a.label, a.parent_id, a.order, c.id.?, a=c.name)
Wie mache ich das mit Slick?
Wie intuitiv das Tupel Syntax ist ... nicht. Schade alt orderBy (nameThatHasMeaning, otherMeaningfulName.desc) wurde zugunsten von sortBy (x => x._3 ~ x._4) Syntax veraltet. Der Slick-Autor hatte einen Grund dafür, aber die Endanwender leiden darunter, dass die Anzahl der Tupel als Ergebnis gezählt wird. – virtualeyes
Sie könnten 'einige Fallklasseninstanz yield' und' getTree.sortBy (r => r.parent_id ~ r.order) ', aber tatsächliche Erklärung von Fall-Klasse ist ein Textvorschlag. Vielleicht namens 'Tuple'-s, mit Konstruktor wie' ('name1 -> value1,' name2 -> value2) 'und Accessor wie' apply (name: Symbol) 'wird in core Scala nützlich sein? Zum Beispiel: 'Ausbeute (.? A.id, a.label, 'parent_id -> a.parent_id,' bestellen -> a.order, c.id, a = c.name)', dann 'getTree.sortBy (r => r ('parent_id) ~ r (' order)) ' – idonnie
Ist diese Antwort immer noch gültig für Slick 2.1? IDEA findet den Operator ~ nicht. Oder fehlt mir eine magische Importaussage? –