Tôi phải sửa đổi truy vấn Hibernate DetachedCriteria lớn để tìm nạp một số liên kết bổ sung.Eager tìm nạp đối tượng lồng nhau với DetachedCriteria trong Hibernate
đồ thị đối tượng của tôi giống như cấu trúc bên dưới, tôi muốn lấy bán hàng kết hợp với mỗi xe:
<class name="Showroom" table="showroom">
...
<bag name="cars" lazy="false">
<one-to-many class="Car" />
</bag>
...
</class>
<class name="Car" table="car">
...
<set name="sales" lazy="true">
<one-to-many class="Sale" />
</set>
...
</class>
Những gì tôi muốn làm là một cái gì đó như:
DetachedCriteria criteria = DetachedCriteria.forClass(Showroom.class);
// ... Existing criteria query code ...
criteria.setFetchMode("cars.sales", FetchMode.JOIN);
Nhưng lập luận associationPath trong setFetchMode dường như bỏ qua ký hiệu chấm và tôi nhận được LazyInitializationException:
Gây ra bởi: org.hibe rnate.LazyInitializationException: thất bại trong việc uể oải khởi tạo một tập hợp các vai trò: Car.sales, không có phiên làm việc hoặc phiên đã được đóng
Tôi đã tìm kiếm xung quanh và cho đến nay không tìm thấy ví dụ hoặc các thông tin. Hibernate documentation không cung cấp các ví dụ về cách tìm nạp các liên kết lồng nhau và Javadoc for setFetchMode dường như gợi ý rằng cách tiếp cận dấu chấm của tôi phải có tác dụng ...
Bất kỳ trợ giúp nào cũng sẽ được đánh giá cao.
Hoàn hảo, cảm ơn lời giải thích. Tôi đã không nhận ra rằng createAlias có một mục đích kép là tạo ra các phép nối cũng như các bí danh của trường. – seanhodges