Tôi đang gặp sự cố với tải chậm không hoạt động khi sử dụng bản đồ được thu thập bằng bộ sưu tập. Tôi tìm thấy bài viết tuyệt vời này mà dường như để sửa chữa các vấn đềTải xuống lười biếng Hibernate để đảo ngược một đến một cách giải quyết - cách thức hoạt động của tính năng này?
http://justonjava.blogspot.co.uk/2010/09/lazy-one-to-one-and-one-to-many.html
Một điều tôi không hiểu là như thế nào workaround sử dụng FieldHandled hoạt động. Bất cứ ai có thể giúp tôi hiểu điều này? Mã được đề cập bên dưới (được sao chép từ ví dụ trên liên kết):
@Entity
public class Animal implements FieldHandled {
private Person owner;
private FieldHandler fieldHandler;
@OneToOne(fetch = FetchType.LAZY, optional = true, mappedBy = "animal")
@LazyToOne(LazyToOneOption.NO_PROXY)
public Person getOwner() {
if (fieldHandler != null) {
return (Person) fieldHandler.readObject(this, "owner", owner);
}
return owner;
}
public void setOwner(Person owner) {
if (fieldHandler != null) {
this.owner = fieldHandler.writeObject(this, "owner", this.owner, owner);
return;
}
this.owner = owner;
}
public FieldHandler getFieldHandler() {
return fieldHandler;
}
public void setFieldHandler(FieldHandler fieldHandler) {
this.fieldHandler = fieldHandler;
}
}
Tôi đang thiếu gì? Có lẽ tôi không biết đủ về vòng đời của hibernate ở đây? Tôi rất vui khi được điều tra nhưng bất cứ ai cũng có thể cho tôi một số gợi ý.
Xin cảm ơn trước.
EDIT
Tôi đẩy qua rất nhiều thay đổi vì vậy rất nhiều các đơn vị của tôi thực hiện FieldHandled nhưng sau đó phát hiện ra một số bài kiểm tra của tôi đã thất bại. Tôi bơm ra SQL và có một số điều kỳ lạ mà các câu lệnh SQL đã xảy ra theo các thứ tự khác nhau nếu giao diện này được thực hiện chỉ với những phương thức này được thiết lập.
public FieldHandler getFieldHandler() {
return fieldHandler;
}
public void setFieldHandler(FieldHandler fieldHandler) {
this.fieldHandler = fieldHandler;
}
Điều này đã khiến các kiểm tra thất bại vì mọi thứ không hoàn toàn chính xác khi tôi đang khẳng định. Điều này làm tăng hiểu biết sai lệch của tôi về biến FieldHandler này.
Cảm ơn @lifus Đó có vẻ như nó có tất cả thông tin HTE tôi cần . Tôi sẽ trải qua điều này. Từ những gì tôi thấy bạn nói mặc dù Im vẫn không chắc chắn lý do tại sao tôi đã nhận được SQL chạy theo một thứ tự khác nhau. Tôi có thể phải điều tra thêm một số ... – RNJ
cố gắng trao cho bạn tiền thưởng nhưng tôi đang sử dụng thiết bị di động. nếu tôi không thể hình dung ra bạn sẽ tự động nhận được nó khi nó hết hạn sớm. cảm ơn vì câu trả lời – RNJ