Was ist der beste Weg, um eine sortierte Assoziation in Grails-Domain-Klassen zu deklarieren?

8

Es scheint, dass es zwei verschiedene Möglichkeiten gibt, sortierte Assoziationen in Grails zu deklarieren:

Methode 1 (siehe hier ) mit der Standardsortierreihenfolge

%Vor%

Methode 2 (siehe hier ) mit SortedSet

%Vor%

Ich bin mir nicht sicher, welche zu verwenden und was ist der Unterschied (wenn vorhanden), Vor- und Nachteile zwischen der Verwendung von einem gegen den anderen.

Ich würde mich über jede Klarstellung freuen.

Danke

    
fabien7474 15.05.2010, 13:57
quelle

1 Antwort

6

Ich begann zu untersuchen, wie das alles funktioniert und fand dann heraus, dass Methode 1 in aktuellen Versionen von Grails (die in 1.2.1 und 1.3 getestet wurden) tatsächlich kaputt ist. Wenn Sie tatsächlich versuchen, einen Autor abzurufen und auf seine Bücher zu schauen, löst er eine Ausnahme aus

Es gibt einen offensichtlichen Defekt dafür ( 4089 ), der seit einiger Zeit geöffnet ist.

Hier ist die Ausnahme, die ausgelöst wird:

%Vor%

Wenn und wenn sie es endgültig beheben, bestehen die Unterschiede zwischen den beiden Methoden darin, dass in der ersten Methode die Sortierung auf Datenbankebene erfolgt. Wie Sie in der obigen Ausnahme sehen können, hat GORM versucht, eine "order by books0_.title" zu erstellen, die einen beliebigen Datenbankindex für das Feld book.title verwendet und die Objekte in dieser Reihenfolge zurückgibt.

Die zweite Methode würde die Objekte im Speicher zu dem Zeitpunkt sortieren, zu dem sie in den Satz eingefügt werden (mit der compareTo-Methode, die definiert wurde).

Bis der aktuelle Fehler behoben ist, verwende ich Methode 2, weil es das einzige ist, was funktioniert. Es sollte für relativ kleine Sammlungen von Dingen in Ordnung sein. Nachdem es behoben ist, würde ich möglicherweise Methode 1 bevorzugen, da die Datenbank beim Sortieren mit einem Index auf dem Sortierfeld schneller sein sollte.

    
Ted Naleid 15.05.2010, 18:13
quelle