ポリモーフィズムがサポートされるように、Hibernateオブジェクトのプロキシを解除するにはどうすればよいですか?
次の例を考えてみましょう。クラスAとBは2つの休止状態のエンティティです。Bには2つのサブタイプ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
}
}
}
Bコレクションが遅延ロードされており、BのすべてのインスタンスがHibernateプロキシであるため、このコードはCブロックまたはDブロックのいずれも実行できません。各インスタンスのプロキシを解除する方法が欲しいのですが。
注:クエリを最適化して、すべてのBを熱心にフェッチできることを理解しています。別の方法を探しています。