Hibernate: Frage zum Abfragen mit zusammengesetzten Schlüsseln

glhlg

Mitglied
Guten Morgen,

mal wieder eine kleine Hibernate-Frage.
Ich habe eine Tabelle mit einem über zwei Spalten zusammen gesetzten Schlüssel.
Ich habe mit die Mapping und Pojo-Dateien von den Hibernatetools erstellen lassen, wie mir hier empfohlen wurde :)

Nun haben die Tools für den zusammen gesetzten eine eigene Klasse angelegt. Das stört mich auch nicht :) Wenn ich jetzt mit den DAO-Klassen nach Datensätzen suche, müsste ich jetzt in den Restrictions ein Objekt von der besagten Klasse übergeben. Ich möchte aber nicht genau einen Datensatz suchen, sondern alle die auf die eine Spalte des zusammen gesetzten Schlüssel passen. :confused:

Hier mal ein Auszug aus der DAO-Klasse, wo ich eins von den "Zwischenobjekten" anlege:
Code:
	public List<AuftragStatus> findByAuftragID(long asid)
	{
		AuftragStatusId asidobj = new AuftragStatusId();
		asidobj.setAuftragId(asid);
		asidobj.setZeitpunkt(sqlTimestampToCalendar("2007-10-11 09:50:12.936901"));
		
		Criterion criterionID = Restrictions.like("id", asidobj);
		List<AuftragStatus> ret = findByCriteria(criterionID);
		
		return ret;
	}
Das war nur zum Testen. Ich möchte eigentlich nur nach asid suchen, was werten der einen Spalte entspricht.

Hoffe, ich konnte mich deutlich genug ausdrücken, wo der Schuh drückt! :)
Danke schon mal für eure Hilfe!
 
Hallo,

frage über den Auftrag:

Restrictions.eq("id.auftragid", auftragID).

Wenn Du von dabei auf die Finger bekommst, mußt Du einen
alias von id.auftragid anlegen.

Generell ist es ratsam für Dich, von zusammengesetzten Schlüsseln Abstand zu nehmen und ein reines ID Objekt zu verwenden.

schöne Grüße
 
Hallo,

von zusammengesetzen Schlüsseln Abstand zu nehmen ist generell ratsam.


Wen sich die Business Keys Deiner Objekte ändern (hatte ich zum Beispiel bei einer Umstellung auf ein revisionssicheres Datenmodell), mußt Du auch die gesamten
Foreign Keys, die darauf referenzieren, anpassen.

Für SQL's ist es einfacher, da über eine Spalte statt mehrerer gejoint werden muß.

Es ist performanter, da die Datenbank Constraints auch nur über 1 Spalte überwachen kann.

Die Java Klassen sind schlanker, da es kein eigenes ID Objekt gibt.

Gruß
 
Hallo,

von zusammengesetzen Schlüsseln Abstand zu nehmen ist generell ratsam.


Wen sich die Business Keys Deiner Objekte ändern (hatte ich zum Beispiel bei einer Umstellung auf ein revisionssicheres Datenmodell), mußt Du auch die gesamten
Foreign Keys, die darauf referenzieren, anpassen.

Für SQL's ist es einfacher, da über eine Spalte statt mehrerer gejoint werden muß.

Es ist performanter, da die Datenbank Constraints auch nur über 1 Spalte überwachen kann.

Die Java Klassen sind schlanker, da es kein eigenes ID Objekt gibt.

Gruß

Danke für den Hinweis! :)
Da ich ganz am Anfang bin und nur experimentiere, kann ich das noch machen, wie ich möchte und es ist kein Aufwand! Darum: guter Tipp zur rechten Zeit! :)
 

Neue Beiträge

Zurück