So heben Sie die Proxy-Freigabe für ein Objekt im Ruhezustand auf
Wie kann ich den Proxy eines Ruhezustandsobjekts aufheben, sodass der Polymorphismus unterstützt wird?
Betrachten Sie das folgende Beispiel. Die Klassen A und B sind zwei Entitäten im Ruhezustand. B hat zwei Subtypen C und D.
List<A> resultSet = executeSomeHibernateQuery();
for(A nextA : resultSet) {
for(B nextB : nextA.getBAssociations() {
if(nextB instanceof C) {
// do something for C
} else if (nextB instanceof D) {
// do something for D
}
}
}
Dieser Code kann weder den C- noch den D-Block ausführen, da die B-Auflistung verzögert geladen wurde und alle Instanzen von B Hibernate-Proxys sind. Ich hätte gerne eine Möglichkeit, die Proxy-Funktion für jede Instanz aufzuheben.
Hinweis: Mir ist klar, dass die Abfrage so optimiert werden kann, dass alle Bs schnell abgerufen werden. Ich suche eine Alternative.