2009-10-19 9 views
7

मुझे यह जानने के लिए एक सहायक की आवश्यकता है कि LazyInitializationException से बचने के लिए एक संपत्ति को लोड किया गया है या नहीं। क्या यह संभव है?क्या यह जानने के लिए कोई सहायक है कि संपत्ति को हाइबरनेट द्वारा लोड किया गया है या नहीं?

@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()); 

उत्तर

13

वास्तव में दो विधियां हैं।

यह पता लगाने के लिए कि क्या आलसी संपत्ति प्रारंभ किया गया है, आप Hibernate.isPropertyInitialized() विधि को अपने इकाई उदाहरण और संपत्ति नाम के साथ पैरामीटर के रूप में आमंत्रित कर सकते हैं।

पता लगाने के लिए कि क्या एक आलसी संग्रह (या संस्था) प्रारंभ कर दिया गया है (जैसे अपने उदाहरण में) आप पैरामीटर के रूप में संग्रह (इकाई) उदाहरण के साथ Hibernate.isInitialized() आह्वान कर सकते हैं।

+0

हमेशा आप, क्रिस। धन्यवाद। –

संबंधित मुद्दे

 संबंधित मुद्दे