2009-04-30 26 views
0

Ich benutze Hibernate mit Java.MyEclipse + Hibernate sortiert keine Eigenschaften nach ID?

Ich habe zwei Tabellen, die mit Fremdschlüsseln verknüpft sind.

 
Table: country 
Fields: ID, Name 
POJO class name : Country 
POJO class properties: id, name, cities 

Table: city 
Fields: ID, Name, CountryID 
POJO class name : Country 

Dann verwende ich "Hibernate Reverse Engineering" von MyEclipse. Es erstellt automatisch DAOs, Abstracts und Pojo-Klassen.

Alles funktioniert sehr gut. Wenn ich ein Country-Objekt anfordere, ruft Hibernate es ab und füllt die Eigenschaft "cities" mit Städten, die CountryID als country.id haben.

noch alles in Ordnung, aber wenn ich „Städte“ Eigenschaft (java Set-Typ) auflisten, drucken dann IDs aller Städte heraus, dass ich diese ungeordnete Liste bekam:

 
ID: 5 
ID: 1 
ID: 4 
ID: 2 

Wo soll ich geordnet nach Städten bearbeiten zu erhalten ID, wenn ich Country-Instanzen aus der CountryDAO-Klasse erhalte?

Antwort

1

Verwenden Sie XML-Mapping oder Anmerkungen?

Normalerweise gibt es für gemappte Sammlungen ein "order-by" -Attribut, mit dem Sie eine Spalte angeben können, um die Sammlung nach, und asc oder desc zu ordnen.

Sehen Sie diese Seite:

http://docs.jboss.org/hibernate/stable/core/reference/en/html/collections-mapping.html

Suche nach "order-by" - Sie werden die entsprechende Sammlung Mapping für Ihr Beispiel finden müssen.

+0

Andy, danke für Ihre Überlegung; Trotzdem bekomme ich immer noch eine Ausnahme. Könnten Sie bitte nachsehen, was damit nicht stimmt? http://pastebin.ca/1410416 –

3

Sie können versuchen, die Kriterien-API von Hibernate zu verwenden, um eine solche Einschränkung bereitzustellen. Das folgende Stück wird die Posts mit der ID aufsteigend bestellen.

List posts = session.createCriteria(Post.class) 
    .addOrder(Order.asc("id")) 
    .list(); 
+0

Es ist eine Weile her, dass ich Hibernate nicht verwendet habe, bitte ignoriere Syntaxfehler, wenn es welche gibt. –

+0

großartige Antwort danke – nimcap

Verwandte Themen