Có rất nhiều người có thể tìm thấy về googling này một chút nhưng tôi đã không hoàn toàn tìm thấy một giải pháp khả thi cho vấn đề này.Nhẹ nhàng tải một chiếc áo choàng trong hibernate
Về cơ bản những gì tôi có là một CLOB lớn trên một lớp cụ thể mà tôi muốn tải theo yêu cầu. Cách ngây thơ để làm điều này sẽ là:
class MyType {
// ...
@Basic(fetch=FetchType.LAZY)
@Lob
public String getBlob() {
return blob;
}
}
Điều đó không làm việc, mặc dù rõ ràng là do thực tế tôi đang sử dụng trình điều khiển oracle, ví dụ: đối tượng Lob không được đối xử như xử lý đơn giản nhưng luôn nạp. Hoặc vì vậy tôi đã được dẫn dắt để tin rằng từ sự đột nhập của tôi. Có một giải pháp sử dụng thiết bị đặc biệt để tải thuộc tính lười biếng, nhưng vì các tài liệu Hibernate dường như cho thấy chúng ít quan tâm đến việc làm việc đó một cách chính xác, vì vậy tôi không muốn đi tuyến đường đó. Đặc biệt là phải chạy thêm một biên dịch và tất cả.
Vì vậy, giải pháp tiếp theo mà tôi đã hình dung là tách đối tượng này thành một loại khác và xác định liên kết. Thật không may, trong khi các tài liệu cung cấp thông tin xung đột, rõ ràng với tôi rằng tải chậm không hoạt động trên các liên kết OneToOne với khóa chính được chia sẻ. Tôi đã đặt một mặt của liên kết là ManyToOne, nhưng tôi không chắc chắn làm thế nào để làm điều này khi có một khóa chính được chia sẻ.
Vậy ai cũng có thể đề xuất cách tốt nhất để giải quyết vấn đề này?
Bạn có thể làm rõ tại sao nó không hoạt động với Oracle? – skaffman
Tôi ăn thịt một chút, tôi không hoàn toàn chắc chắn vấn đề chính xác là gì (bit mơ hồ về chi tiết). Nếu vấn đề là với việc lập bản đồ, bạn có thể đưa ra một vấn đề mà lười biếng có nên tải đúng không? – wds
Nếu bạn đã thử nó với Oracle, và nó không thành công, làm thế nào nó đã thất bại? – skaffman