cómo desaprender un objeto de hibernación
¿Cómo puedo desaprender un objeto de hibernación, de modo que se admita el polimorfismo?
Considere el siguiente ejemplo. Las clases A y B son dos entidades hibernadas. B tiene dos subtipos C y 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
}
}
}
Este código no ejecuta el bloque C o D, ya que la colección B se ha cargado de forma perezosa y todas las instancias de B son proxies de Hibernate. Me gustaría una manera de desaprender cada instancia.
Nota: Me doy cuenta de que la consulta se puede optimizar para obtener con entusiasmo todos los B's. Estoy buscando una alternativa.