Tôi có 2 bảng: Order [OrderId(PK), OrderShipmentCode, ...]
và Shipment[ShipmentId(PK), ShipmentCode, ...]
.Hibernate: @ManyToOne (fetch = FetchType.LAZY) không hoạt động trên cột được tham chiếu khóa không chính
Trong Order
lớp, tôi tuyên bố shipment
lĩnh vực như sau:
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "OrderShipmentCode", referencedColumnName = "ShipmentCode", insertable = false, updatable = false, nullable = false)
private Shipment shipment;
Khi tôi nhận được danh sách các Order
, các Shipment
cũng được nạp (Tôi thấy nhiều truy vấn SELECT riêng biệt). Nhưng tôi muốn các Shipment
được tải lười biếng, không được lấy cùng với Order
.
Đối với các bảng khác, nếu cột được tham chiếu là khóa chính thì kết quả như mong đợi (Tải trọng lười được sử dụng). Trong trường hợp của tôi, ShipmentCode
không phải là khóa chính của bảng Shipment
và tải chậm không được Hibernate sử dụng.
Bạn có thể chỉ cho tôi cách hoàn thành mục tiêu đó không?
EDIT: Mã Query là như dưới đây: Truy vấn
Criteria criteria = HibernateUtil.getSessionFactory().getCurrentSession().createCriteria(Order.class);
List result = criteria.list();
SQL là: 1 SELECT tuyên bố cho Order
bảng và một loạt các câu lệnh SELECT cho Shipment
Bạn có thể hiển thị các mã cho các tiêu chí hoặc truy vấn bị sa thải? – RAS