playframework Avaje-EBean-आंशिक वस्तु प्रश्न अक्षम आलसी लोड हो रहा है




(2)

मैं Play का उपयोग कर एक ऐप विकसित कर रहा हूं! फ़्रेमवर्क 2.1.3, मॉडल स्तर के लिए ईबेन का उपयोग करके मैं आंशिक ऑब्जेक्ट क्वेरी को निष्पादित करने में सक्षम होना चाहता हूं और जब मैं उपयोगकर्ता को परिणाम वापस भेजने के लिए तैयारी में JSON को सीरियल करना चाहता हूं, तो मैं बिना अवांछित गुणों की मांग पर आलसी लोड हो रहा है।

मैंने स्वयं को ऑटोफ़ैच सेट करने का प्रयास किया है, मैंने भी लेनदेन को समाप्त करने की कोशिश की है JSON (मैं एक लेन-देन को निष्क्रिय त्रुटि @Lazy(false) है) से serializing से पहले मैंने अपने मॉडल क्लास पर @Lazy(false) एनोटेशन को भी जोड़ दिया है I

उसी नोट पर, मेरे पास वन-टू-कई एसोसिएशन भी हैं, और मैं इसे की पहली 3 पंक्तियों का प्रश्न करना चाहता हूं, मैंने new FetchConfig().queryFirst(2) प्रयोग किया है new FetchConfig().queryFirst(2) लेकिन मुझे लगता है कि वही आलसी लोड करने की समस्या के कारण, I सम्पूर्ण सम्बंधित सम्बद्ध पंक्तियां प्राप्त करना

मैनुअल को देखकर, मैंने इसे ( ईबीन आंशिक ऑब्जेक्ट्स ) पढ़ा है:

एक आंशिक ऑब्जेक्ट आज़ाद मांग पर शेष डेटा लोड करेगा जब आप किसी संपत्ति को प्राप्त करते हैं या सेट नहीं करते हैं।

इस के चारों ओर कोई रास्ता नहीं है, मैंने कुछ भी नहीं करने की कोशिश की थी।


आपके पास 2 विकल्प हैं

विकल्प 1) ईबीएन का जेसनॉन समर्थन में बनाया गया है जो जैक्सन कोर का उपयोग हुड के तहत करता है। ईबीएन के जेएसएन कॉन्टेक्स्ट से कई लेखक विकल्प उपलब्ध हैं।

PathProperties का उपयोग करते हुए एक उदाहरण जो दोनों क्वेरी और JSON पर लागू होता है।

PathProperties pathProperties =
        PathProperties.parse("(id,status,name,shippingAddress(id,line1,city),billingAddress(*),contacts(*))");

List<Customer> customers = Ebean.find(Customer.class)
    .apply(pathProperties)
    .findList();

String jsonString = Ebean.json().toJson(customers, pathProperties);

विकल्प 2) संस्करण 6.2.2 पर एक नई उपलब्ध सुविधा है, जहां आप क्वेरी पर DisableLazyLoading (सत्य) सेट कर सकते हैं।

संदर्भ: https://github.com/ebean-orm/avaje-ebeanorm/issues/360


मैंने इस मुद्दे को मानक जेडीबीसी इंटरफ़ेस का इस्तेमाल करके उन Statements पर Statements और ResultSets का उपयोग करके हल किया है, जिन पर मुझे आलसी लोडिंग न होने की आवश्यकता है।

एक तरफ नोट के रूप में, पता चलता है कि स्काला के मामले में, प्रत्यक्ष क्षेत्र पहुंच आलसी लोडिंग का उपयोग नहीं करता है, लेकिन दुर्भाग्य से यह वह भाषा नहीं है जो मैं अपने आवेदन के लिए उपयोग कर रहा हूं।