Những gì bạn đang thấy là đối tượng Hibernate-Proxy-Object, cho phép ngủ đông làm việc khởi động lười biếng.
Điều đầu tiên cần tự hỏi là, cho dù bạn thực sự muốn truy cập đối tượng gốc. Thông thường bạn nên được tốt hơn off giả vờ proxy là đối tượng thực tế của bạn và để cho ngủ đông làm tất cả các phép thuật.
Nếu vì một lý do nào bạn thực sự cần các đối tượng chính nó (ví dụ như nếu bạn cần loại chính xác), đoạn code sau sẽ làm việc:
if (object instanceof HibernateProxy) {
return ((HibernateProxy) object).getHibernateLazyInitializer().getImplementation();
}
Bạn nên biết rằng kết quả của mã abovewritten sẽ cung cấp cho bạn một đối tượng tách rời không còn nằm trong điều khiển ngủ đông, do đó, các thay đổi đối tượng sẽ không được đồng bộ hóa với cơ sở dữ liệu!
cảm ơn bạn đã trả lời. Im thực sự không chắc chắn nếu tôi muốn đối tượng ban đầu. Tôi muốn lấy các giá trị từ các trường của nó. Làm thế nào để tôi giả vờ? Bạn có thể cho tôi lời khuyên không? cảm ơn trước. – bunnyjesse112
Proxy sẽ tải dữ liệu thực tế từ cơ sở dữ liệu khi trường được truy cập thông qua các phương thức truy cập. Vì vậy, về cơ bản có hai cách. Gọi o.getField() trong mã (sau đó bạn có thể thấy giá trị thực tế trong cửa sổ trình gỡ lỗi) hoặc thêm o.getField() vào cửa sổ được xem. Cả hai cách sẽ cung cấp cho bạn dữ liệu thực tế. – Jonathan
Danh sách tài liệu = criteria.list(); MyDocument myDocument = (MyDocument) docs.get (0); String toReturn = null; toReturn = myDocument.getProject(). GetMiddleName(); để trả về là null. tôi đang ở đâu vậy? – bunnyjesse112