Hi,
ich hoffe jemand im großen Hibernate-Dschungel kann mir
weiterhelfen :-)
Mein Problem:
ich habe drei Klassen die gegenseitig auf einander
zeigen, also mehr oder weniger ein kette bilden...
Das sieht ungefähr so aus, A -> B -> C -> B -> C -> ...
Klasse A hat als Attribut ein Objekt der Klasse B,
Klasse B hat als Attribut ein Objekt der Klasse C und
Klasse C hat als Attribut wieder ein Objekt der Klasse
B....
nun sind die klassen, oder besser gesagt die Klasse A,
als tabellen über Hibernate korrekt angelegt, die
Relationen alle in ordnung.
Nun möchte ich mit einer Query ein Objekt der Klasse A
aus der DB wieder zurück in ein Objekt schreiben.
Soweit so gut. Leider möchte ich keine Lazy Bindungen
und alle asoziationen über eager-fetching. Also sieht
die Query so aus:
//Create query
StringBuffer hqlQuery = new StringBuffer();
hqlQuery.append("from Challenge challenge");
hqlQuery.append(" inner join fetch challenge.start");
hqlQuery.append(" left join fetch challenge.start.Condition condition ");
hqlQuery.append(" left join fetch condition.successorTask task ");
hqlQuery.append(" left join fetch task.Condition condition2 ");
hqlQuery.append(" left join fetch condition2.successorTask ");
hqlQuery.append(" where challenge.id = :id");
//Fill query
...
//Execute query
... query.uniqueResult();
Das klappt auch, nun möchte ich nicht für jede Bindung
ein join fetch machen!
Gibt es ein möglichkeit mit einem Query auf alle
Associationen aufeinmal zugreiffen zu können? Und somit
ein Objekt mit allen Bindungen, die in den Tabellen zu
sehen sind, also eine Vollständige Kette, zu bekommen
und nicht jede Assoziation manuell eintragen zu müssen?
Ich wäre für ein wenig hilfe dankbar!
Grüße,
olaf3
|