Sortierung mit der Criteria API

computersport

Aktives Mitglied
Moin,

ich versuch zurzeit eine Sortierung mit der Criteria API durchzuführen.
Jedoch auf eine EmbeddedId.

Die POJO:
Java:
@Entity
@Table(name = "BESCHREIBUNG")
public class Beschreibung implements Serializable 
{
  @EmbeddedId
  protected BePK BePK;
  @Column(name = "BESCHR", length = 80)
  private String beschr= "";

  public VO()
  {
  }
}
EmbeddedId:
Java:
@Embeddable
public class BePK implements Serializable {
    @Column(name = "Name", length=80)
    private String name;
    @Column(name = "BENUTZERNAME", length=80)
    private String benutzername;

    public BePK() {
    }
}
Der Aufruf:
Java:
    criteria = con.getSession().createCriteria(Beschreibung.class);
    criteria.addOrder(Order.desc("name"));

Fehlermeldung:
Java:
Exception in thread "main" org.hibernate.QueryException: could not resolve property: name of: de.test.system.Beschreibung

Warum findet Hibernate nicht das Attribut?
Nehme ich die falsche Bezeichnung? (Ich hatte schon einiges ausprobiert wie: "Beschreibung.BePK.name" auch Groß und Kleinschreibung)

Funktioniert aber nichts von.
 
S

SlaterB

Gast
name steht außer Frage, Beschreibung hat doch kein entsprechendes Attribut,
'BePK.name' wäre zusammengesetzt, ob das so funktioniert ist generell fraglich (wobei ich nichts dazu weiß, verwende nur HQL),
fange doch mit Tests nach
> Order.desc("benutzername")
> Order.desc("BePK")
an, was funktioniert davon alles?


dringender als deinen nächsten Atemzug empfehle ich übrigens, BePK klein zu schreiben,
sowieso für ALLE normalen Attribute in ALLEN Java-Klassen Standard,
noch viel wichtiger aber sollte man sich an die Konvention in derart kontrollierten Umgebungen halten
 

computersport

Aktives Mitglied
name steht außer Frage, Beschreibung hat doch kein entsprechendes Attribut,
'BePK.name' wäre zusammengesetzt, ob das so funktioniert ist generell fraglich (wobei ich nichts dazu weiß, verwende nur HQL),
fange doch mit Tests nach
> Order.desc("benutzername")
> Order.desc("BePK")
an, was funktioniert davon alles?
Ich hab
> Order.desc("BePK")
> Order.desc("benutzername")
> Order.desc("BePK.benutzername")
> Order.desc("BePK.name")
> Order.desc("name")
ausprobiert aber bei jedem krieg ich die selbe Exception.

dringender als deinen nächsten Atemzug empfehle ich übrigens, BePK klein zu schreiben,
sowieso für ALLE normalen Attribute in ALLEN Java-Klassen Standard,
noch viel wichtiger aber sollte man sich an die Konvention in derart kontrollierten Umgebungen halten
Das tue ich normalerweise auch. Das ist ein Beispiel das ich eben schnell zusammen geschrieben habe, aber das vom Aufbau genauso ist wie mein Produktivsystem. Das Produktivsystem hält die Konventionen ein.

Grüße
Compi
 
S

SlaterB

Gast
äh, benutzername war schlechter Vorschlag von mir, das Attribut ist ja auch nicht in Beschreibung, sondern in BePK
'beschr' ist dagegen ein normales Attribut, kannst du die Beschreibung-Criteria danach sortieren?

zusammengesetzt müsste ansonsten normalerweise auch funktionieren, habe ich bei mir soeben getestet,
allerdings verwende ich auch nur kleingeschriebene private Attribute zusammen mit public getter/setter und keine Annotations sondern hbm.xml-Dateien,
ich kann also deinen Fall weder genau beurteilen noch allzu gut selber darstellen/ testen

versuche bePK kleingeschrieben, schaue im Internet funktionierende Beispiel an
(folgender prominenter Link verwendet allerdings auch merkwürdige Großschreibung
Descending Order : CriteriaHibernateJava Tutorial
)
ansonsten kann ich persönlich nichts mehr beitragen
 

Ähnliche Java Themen

Neue Themen


Oben