Hi,
ich brauche eine Lösung um ein vollständig geladenes Objekt aus Hibernate zu bekommen.
So sieht der Code aus, der das Objekt holt:
Ich erhalte aber immer den Fehler "failed to lazily initialize a collection of role", wenn ich auf z.B. resultObject.getCollection() zugreifen will.
Es gibt hierzu zwar schon viele Informationen im Internet, aber keine ist in meinem Fall hilfreich:
1) Alle nötigen Objektzugriffe innerhalb einer Transaction durchführen: Ungeeignet, da das Projekt eine Schnittstelle ist, die so ein Objekt auch zu anderen Applikationen nach "draußen" liefert.
2) Mit Annotations das Verhalten auf "EAGER" setzen: Es kommt bei mehr als einer Collection die Exception "cannot simultaneously fetch multiple bags".
3) "hibernateTemplate.evict(resultObject);" vor dem return hat gar nichts geändert.
4) In der DAO Klasse sollen die Collections einmal aufgerufen werden. Ersten ist die Session schon direkt nach den hibernateTemplate.find zu und zweitens kenne ich die Collections nicht, denn ResultObject ist ein Interface und DefaultResultObject abstract. Es gibt ca. 100 verschiedene abgeleitete Result Object Klassen und ich werde sicher nicht für jede eine eigene DAO schreiben.
Also, wie zum Henker kriege ich das vollständige Objekt in die Variable rein?
Viele Grüße
Laurin
ich brauche eine Lösung um ein vollständig geladenes Objekt aus Hibernate zu bekommen.
So sieht der Code aus, der das Objekt holt:
Java:
@Override
public ResultObject getResultObjectByCall(Call call, String callParameter) {
List<ResultObject> results = hibernateTemplate.find("FROM DefaultResultObject WHERE call = ? AND callParameter = ?", new Object[]{call, callParameter});
if (results.isEmpty()) {
return null;
}
ResultObject resultObject = results.get(0);
return resultObject; //<-- This ****ing object shall contain all object information
}
Ich erhalte aber immer den Fehler "failed to lazily initialize a collection of role", wenn ich auf z.B. resultObject.getCollection() zugreifen will.
Es gibt hierzu zwar schon viele Informationen im Internet, aber keine ist in meinem Fall hilfreich:
1) Alle nötigen Objektzugriffe innerhalb einer Transaction durchführen: Ungeeignet, da das Projekt eine Schnittstelle ist, die so ein Objekt auch zu anderen Applikationen nach "draußen" liefert.
2) Mit Annotations das Verhalten auf "EAGER" setzen: Es kommt bei mehr als einer Collection die Exception "cannot simultaneously fetch multiple bags".
3) "hibernateTemplate.evict(resultObject);" vor dem return hat gar nichts geändert.
4) In der DAO Klasse sollen die Collections einmal aufgerufen werden. Ersten ist die Session schon direkt nach den hibernateTemplate.find zu und zweitens kenne ich die Collections nicht, denn ResultObject ist ein Interface und DefaultResultObject abstract. Es gibt ca. 100 verschiedene abgeleitete Result Object Klassen und ich werde sicher nicht für jede eine eigene DAO schreiben.
Also, wie zum Henker kriege ich das vollständige Objekt in die Variable rein?
Viele Grüße
Laurin