2009-10-19 17 views
7

Tôi cần người trợ giúp để biết liệu tài sản có được tải như một cách để tránh LazyInitializationException hay không. Có thể không?Có một người trợ giúp để biết liệu một tài sản đã được tải bởi Hibernate?

@Entity 
public class Parent { 
    @OneToMany 
    private List<Child> childList; 
} 

@Entity 
public class Child { 

} 

"select distinct p from Parent p left join fetch p.childList"; 

// Answer goes here 
// I want to avoid LazyInitializationException 
SomeHelper.isLoaded(p.getChildList()); 

Trả lời

13

Thực tế, có hai phương pháp.

Để tìm hiểu xem tài sản lười biếng đã được khởi tạo hay chưa, bạn có thể gọi phương thức Hibernate.isPropertyInitialized() với tên đối tượng và tên thuộc tính làm thông số.

Để tìm hiểu xem một lười biếng bộ sưu tập (hoặc tổ chức) đã được khởi tạo (như trong ví dụ của bạn), bạn có thể gọi Hibernate.isInitialized() với bộ sưu tập (thực thể) ví dụ như là tham số.

+0

Luôn luôn là bạn, Chss. Cảm ơn bạn. –

Các vấn đề liên quan