¿Cómo puedo desprogramar un objeto de hibernación, de modo que el polimorfismo sería compatible?cómo desprogramar un objeto de hibernación
Considere el siguiente ejemplo. Las clases A y B son dos entidades de hibernación. 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 se puede ejecutar ya sea el C o el bloque D, ya que la colección B ha sido perezoso cargado, y todos los casos de B son proxies de hibernación. Me gustaría una forma de desprocesar cada instancia.
Nota: Me doy cuenta de que la consulta se puede optimizar para buscar ansiosamente todas las B. Estoy buscando una alternativa.
Sé que es una vieja pregunta, pero como apareció como el primer resultado en una búsqueda en Google, tendré que comentar aquí que si tiene que usar 'instanceof', entonces probablemente esté haciendo mal el polimorfismo. – drigoangelo