Làm thế nào tôi có thể unproxy một đối tượng ngủ đông, như vậy mà đa hình sẽ được hỗ trợ?làm thế nào để unproxy một đối tượng ngủ đông
Hãy xem ví dụ sau. Các lớp A và B là hai thực thể ngủ đông. B có hai loại phụ C và 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
}
}
}
Mã này không thực thi khối C hoặc D, vì bộ sưu tập B bị tải chậm và tất cả các phiên bản B là proxy Hibernate. Tôi muốn một cách để unproxy mỗi trường hợp.
Lưu ý: Tôi nhận ra rằng truy vấn có thể được tối ưu hóa để háo hức tìm nạp tất cả B. Tôi đang tìm một giải pháp thay thế.
Tôi biết đó là một câu hỏi cũ, nhưng vì nó xuất hiện như là kết quả đầu tiên trong tìm kiếm google, tôi sẽ phải bình luận ở đây rằng nếu bạn phải sử dụng 'instanceof', thì có thể bạn đang làm đa hình sai. – drigoangelo