Freitag, 14. September 2012

Spring Roo: sortierte Listen

Um mit Spring Roo per Konsolenbefehle sortierten Listen zu erstellen, erfordert es einen kleinen manuellen Eingriff.
Hier eine Anleitung anhand eines Beispiels:

field set  --fieldName orderedBs --type ~.domain.ClassB 
--cardinality ONE_TO_MANY --class ~.domain.ClassA
field number --fieldName orderNo --type java.lang.Integer  --min 0

Damit erhält man ein unsortiertes Set generiert, es gibt aber kein Schlüsselwort um eine sortierte Liste zu erzeugen. Alle Attribute für die Sortierung sind aber bereits angelegt.
Das Gute: Die Views und Controller  funktionieren jetzt schon ohne Anpassung für sortierte Listen. 
Die einzige Änderung die man nun per Hand machen muss, ist die Umstellung in der generierten Modell - Klasse (~domain.ClassA):  

    @OneToMany(mappedBy = "classA", cascade = CascadeType.ALL)
    @OrderBy("orderNo")
    private List<ClassB>  orderedBs  = new LinkedList<ClassB>();

Das war es, es werden sortierte Ergebnisse in den Views ohne weitere Anpassungen geliefert.
Kleiner Pferdefuß: da "order" ein Schlüsselwort in SQL ist, kann es nicht als Attributname für die Annotation OrderBy verwendet werden. D.h. @OrderBy("order") ist durch SQL verboten! Das merkt aber erst die Datenbank, die Annotation, Hibernate und Spring halten sich hier völlig ruhig.

Keine Kommentare:

Kommentar veröffentlichen