我該如何取消一個hibernate對象的處理,以支持多態性?如何取消一個hibernate對象
考慮下面的例子。類A和B是兩個hibernate實體。 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的所有實例是休眠的代理。我想要一個方法來取消每個實例的代理。
注:我意識到查詢可以優化,以熱切地獲取所有B的。我正在尋找替代品。
我知道這是一個古老的問題,但因爲它出現在谷歌搜索中的第一個結果,我必須在這裏評論,如果你必須使用'instanceof',那麼你可能在做多態錯誤。 – drigoangelo