# Hibernate Criteria sqlRestrictions



## kotoko (10. Sep 2010)

Hallo,

ich wollte gerne in einer Criteria-Query nach einer differenz zweier Spalten sortieren lassen. Und zwar möchte ich den Auftrag nach der differenz der Werte (wertA - wertB) sortieren lassen. Ich glaube das lässt sich in etwa so realisieren. Diese Variante funst nicht. Daher meine Frage wie muss sowas aussehen? 
Vielen Dank für eure Hilfe.


```
Criteria criteria = s.createCriteria(Auftrag.class);
criteria.add(Restrictions.sqlRestriction("ORDER BY (auftrag.bestellung.bestellcode.wertA - auftrag.bestellung.bestellcode.wertB) ASC"));
```
Infos zu den Klassen.

```
public class Auftrag{
  private Bestellung bestellung;
  ...
}
public class Bestellung{
  private Bestellcode bestellcode;
  ...
}
public class Bestellcode{
  private int wertA;
  private int wertB;
  ...
}
```


----------



## SlaterB (10. Sep 2010)

gibts ne Fehlermeldung oder sonstige Reaktion?

Restrictions kommen in den WHERE-Teil der Query, da geht nichts zu sortieren

----

nach
[#HHH-2381] Criteria API : Order by Native SQL - Hibernate JIRA
gibts anscheinend standarmäßig nichts für SQL-Order, aber man könnte eine eigene Klasse definieren wie dort angegeben


----

in
Chapter 15. Criteria Queries
wird für die eigene Klasse {alias} geschrieben, berücksichtige das evtl. für SQL-Restriktionen


----------



## Marcinek (11. Sep 2010)

Um ein Order einzufügen, dann musst du Criteria.add(Order.asc(Feld)); benutzen.


----------

