Hallo allerseits,
ich habe folgende Tabelle, welche aus unten genannten Feldern besteht, welche ich auf eine entsprechende Klasse (Entity) "Benutzer.class" gemappt habe:
id
kennung
stand
bemerkung
Ein Benutzer kann hierbei mehrere Stände haben und ich möchte mir nun alle Benutzer mit ihren jeweils aktuellen Ständen anzeigen lassen. In SQL würde ich das also ungefähr folgendermaßen lösen:
select max(stand), kennung from BEN group by kennung;
Mein Ansatz über die Criteria-API war nun wie folgt:
Das Problem ist nun das das von Hibernate generierte Query nicht alle erforderlichen Tabellenspalten abfragt um aus dem Ergebnis die entsprechenden Objekte der Klasse "Benutzer" zu generieren. Das von Hibernate generierte Query sieht folgendermaßen aus:
SELECT *
FROM ( SELECT MAX (this_.STAND) AS y0_, this_.KENNUNG AS y1_
FROM BEN this_
GROUP BY this_.KENNUNG)
und ich bekomme eine Exception:
Meine Frage ist nun, wie ich es erreichen kann, dass Hibernate automatisch alle erforderlichen Felder für die Generierung der Objekte mit ermittelt. Ich möchte die Felder jedoch nicht einzeln explizit angeben müssen.
Wäre super wenn Ihr mir helfen könntet.
Grüße
Don
ich habe folgende Tabelle, welche aus unten genannten Feldern besteht, welche ich auf eine entsprechende Klasse (Entity) "Benutzer.class" gemappt habe:
id
kennung
stand
bemerkung
Ein Benutzer kann hierbei mehrere Stände haben und ich möchte mir nun alle Benutzer mit ihren jeweils aktuellen Ständen anzeigen lassen. In SQL würde ich das also ungefähr folgendermaßen lösen:
select max(stand), kennung from BEN group by kennung;
Mein Ansatz über die Criteria-API war nun wie folgt:
Java:
Criteria criteria = hibernateSession.createCriteria(Benutzer.class);
ProjectionList list = Projections.projectionList();
list.add(Projections.groupProperty("kennung"));
list.add(Projections.max("stand"));
criteria.setProjection(list);
List<Benutzer> result = (List<Benutzer>)criteria.list();
Das Problem ist nun das das von Hibernate generierte Query nicht alle erforderlichen Tabellenspalten abfragt um aus dem Ergebnis die entsprechenden Objekte der Klasse "Benutzer" zu generieren. Das von Hibernate generierte Query sieht folgendermaßen aus:
SELECT *
FROM ( SELECT MAX (this_.STAND) AS y0_, this_.KENNUNG AS y1_
FROM BEN this_
GROUP BY this_.KENNUNG)
und ich bekomme eine Exception:
Java:
java.lang.Object; cannot be cast to de.data.Benutzer
Meine Frage ist nun, wie ich es erreichen kann, dass Hibernate automatisch alle erforderlichen Felder für die Generierung der Objekte mit ermittelt. Ich möchte die Felder jedoch nicht einzeln explizit angeben müssen.
Wäre super wenn Ihr mir helfen könntet.
Grüße
Don
Zuletzt bearbeitet von einem Moderator: