Hibernate: Skalare Funktionen und Update

Status
Nicht offen für weitere Antworten.

Marsman

Bekanntes Mitglied
Hallo Ihr!

Ich möchte gerne in einer Liste Daten einer Tabelle a anzeigen. Zusätzlich soll je Zeile die Anzahl der Sätze der Tabelle b angezeigt werden, die zu a in einer 1:n Beziehung steht:

Code:
select a.*, (select count(b.id) from b where b.a_id = a.id) from a;

Dazu hätte ich nun zwei Fagen: Zum einen würde ich gerne wissen, ob dies statt mit HQL auch mit Criteria programmiert werden kann. Außerdem frage ich mich, ob auf das Ergebnis der Abfrage auch Updates möglich sind. Denn der Benutzer soll die Möglichkeit haben, für Tabelle a auch Sätze hinzufügen, ändern und löschen zu können.

Danke, Titus
 
Zu 1.) ja... guck einfach mal in die Doku zur Criteria-API - da steht eigentlich alles drin... - zu 2. nunja - du hast ja dann die Objekte, verändere sie und pack sie wieder per saveOrUpdate zurück in die DB...
 
SnooP hat gesagt.:
Zu 1.) ja... guck einfach mal in die Doku zur Criteria-API - da steht eigentlich alles drin... - zu 2. nunja - du hast ja dann die Objekte, verändere sie und pack sie wieder per saveOrUpdate zurück in die DB...

Danke für deine Hinweise.

Zu 1.) In der Doku zu Criteria habe ich schon geschaut und nix gefunden. Nun war ich mir nicht sicher, ob's wirklich dafür nichts gibt oder ob ich nicht richtig gelesen und oder verstanden habe.
Zu 2.) Weil ich zusätzlich zur Entity auch die Spalte aus dem Count() erhalte, kann ich meiner Ansicht nach das Ergebnis der Abfrage nicht einer List<A> zuweisen (A ist die Entity), sondern muss eine neue Klasse schreiben. Eine Klasse, die A und die Spalte aus Count() aufnimmt. Oder wie oder was? Und wie mache ich dann den SaveOrUpdate? Muss die neue Klasse die Enitty-Klasse A erweitern? :roll:

Titus
 
zu 1.) Was genau verstehst Du nicht? Wenns um count geht, dann guck dir Projections an.
zu 2.) Wie wäre es, den Count als Property in A mit aufzunehmen? Das Property wird dann nicht auf eine Column gemappt, sondern z.B. per Hand im DAO mit dem Count-Statement gefüllt. Dann kannst Du mit Deinen A-Entitäten arbeiten und hast direkt den Count-Wert eingetütet.
 
...ich bekomme es einfach nicht hin. Könnte mir jemand mein HQL von oben mal als Criteria schreiben?


Danke, Titus
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben