-->
These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 8 posts ] 
Author Message
 Post subject: Alternative zu "ORDER BY * DECT
PostPosted: Fri Nov 25, 2005 4:01 am 
Hallo,

ich soll meine Ausgaben nun einmal falsch herum sortieren.
Da wurde mir gesagt, dass ich 2 Methoden haben.

1. SQL Befehl "ORDER BY * DECT" mit dem es auch funktioniert
2. aber der andere?? kann ich einer List() noch sachen mitgeben, die das selbe wie ORDER BY * DECT machen?

Ich bedanke mich schon mal im voraus für jede hilfe.

Gruß

Dit


Top
  
 
 Post subject: Re: Alternative zu "ORDER BY * DECT
PostPosted: Fri Nov 25, 2005 5:18 am 
Regular
Regular

Joined: Sat Nov 05, 2005 5:33 am
Posts: 70
Location: Linz, Austria
Dit wrote:
Hallo,

ich soll meine Ausgaben nun einmal falsch herum sortieren.
Da wurde mir gesagt, dass ich 2 Methoden haben.

1. SQL Befehl "ORDER BY * DECT" mit dem es auch funktioniert
2. aber der andere?? kann ich einer List() noch sachen mitgeben, die das selbe wie ORDER BY * DECT machen?

Ich bedanke mich schon mal im voraus für jede hilfe.

Gruß

Dit



ad 1.
Ich gehe davon aus, Du meinst DESC und gibst die Spalten an, nach denen Du sortieren willst.
Oder willst Du nach allen Properties des Objektes sortieren? Dann muss Dir aber klar sein, dass die Reihenfolge der Properties nicht festgelegt ist!

ad 2.
Du kannst bei Collections.sort einen Comparator mitgeben, der die Vergleiche so macht, wie Du willst.
Ein falsch herum sortierender Comparator würde einfach -1 * Ergebnis von compareTo nehmen.

_________________
hth,
Heinz
Don't forget to rate if this helped


Top
 Profile  
 
 Post subject:
PostPosted: Fri Nov 25, 2005 5:40 am 
Ja klar meine ich....

aber ich habe soeben eine andere Lösung gefunden...
muss die nur noch meiner Methode anpassen...

und zwar...

List results = session.createCriteria(EventDAO.class)
.addOrder(Order.desc("id")).list();

das soll funktionieren... (laut Buch :-))

Aber danke... ich komme gerne wieder auf das Formum zurück...


Top
  
 
 Post subject:
PostPosted: Fri Nov 25, 2005 5:42 am 
Regular
Regular

Joined: Sat Nov 05, 2005 5:33 am
Posts: 70
Location: Linz, Austria
Du hast Recht. Mit der Criteria-API geht das auch schön.

Viel Spaß noch mit Hibernate,
Heinz


Top
 Profile  
 
 Post subject:
PostPosted: Tue Nov 29, 2005 12:40 pm 
Newbie

Joined: Tue Oct 18, 2005 11:22 am
Posts: 14
Hallo zusammen,

kann mir jemand von Euch vielleicht sagen, warum die Collection-Elemente "bag" und "list" kein "sort"-Attribut haben?

Ich würde gerne die Elemente einer Liste schon beim Laden aus der DB sortieren. Da es sich dabei um Strings mit Umlauten und Sonderzeichen handelt, reicht das order-by-Attribut nicht aus.

Bei Sets ist das kein Problem, da gebe ich einfach ein Collator-Objekt per "sort"-Attribut mit. Es ist für mich nicht nachvollziehbar, warum dieses Attribut nicht in allen Collection-Elementen erlaubt ist. :-(

Irgendwelche Tipps?


Top
 Profile  
 
 Post subject:
PostPosted: Tue Nov 29, 2005 12:50 pm 
Senior
Senior

Joined: Mon Aug 22, 2005 5:45 am
Posts: 146
du musst das Attribut list-index verwenden.
bag kann man m. E. nicht sortieren.

<list name="carComponents"
table="CarComponents">
<key column="carId"/>
<list-index column="sortOrder"/>
<composite-element class="CarComponent">
<property name="price"/>
<property name="type"/>
<property name="serialNumber" column="serialNum"/>
</composite-element>
</list>

_________________
Please don't forget to give credit, if my posting helped to solve your problem.


Top
 Profile  
 
 Post subject:
PostPosted: Tue Nov 29, 2005 12:51 pm 
Senior
Senior

Joined: Mon Aug 22, 2005 5:45 am
Posts: 146
http://www.hibernate.org/hib_docs/v3/re ... s-ofvalues

_________________
Please don't forget to give credit, if my posting helped to solve your problem.


Top
 Profile  
 
 Post subject:
PostPosted: Tue Nov 29, 2005 1:22 pm 
Newbie

Joined: Tue Oct 18, 2005 11:22 am
Posts: 14
axismundi wrote:
du musst das Attribut list-index verwenden.
bag kann man m. E. nicht sortieren.

<list name="carComponents"
table="CarComponents">
<key column="carId"/>
<list-index column="sortOrder"/>
<composite-element class="CarComponent">
<property name="price"/>
<property name="type"/>
<property name="serialNumber" column="serialNum"/>
</composite-element>
</list>

Das list-Element wollte ich bewusst nicht nehmen, weil es da immer Probleme gibt, wenn über die DB manuell einzelne Element gelöscht werden.

Wird z.B. das Element mit dem Index 2 in der DB gelöscht (nicht über die Java-Applikation), dann sind plötzlich nur noch Element mit den Indizes 0, 1, 3 vorhanden und Hibernate fügt an der Stelle 2 "null" ein. Das ist schlecht...

Deshalb habe ich eine Collection gewählt, bei der die Reihenfolge nicht mit abgespeichert wird, sondern die beim Lesen aus der DB jedesmal dynamisch sortiert wird. Eben per Comparator und sort-Element. Leider geht das jetzt ned...

Trotzdem danke. Hast Du vielleicht sonst noch ein Trick auf Lager?


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 8 posts ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.