如何取消代理休眠对象,以便支持多态性?
考虑以下示例。A 类和 B 类是两个休眠实体。B有两个亚型C和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
}
}
}
此代码无法执行 C 或 D 块,因为 B 集合已被延迟加载,并且 B 的所有实例都是 Hibernate 代理。我想要一种取消代理每个实例的方法。
注意:我意识到可以优化查询以急切地获取所有 B。我正在寻找替代方案。