2012-10-21 21 views
6

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

मैं जानता हूँ कि यह संभव है, लेकिन मैं वास्तव में यह कैसे करना है ...
को समझ नहीं सकता यहाँ मैं मेरी कक्षा Shop में है क्षेत्रों में से कुछ हैं:

public String imagePath; 
public String profileImagePath; 
public String Motto; 
@Reference 
public Category primeCategory; 
public boolean isOnline; 

आप देख सकते हैं , primeCategory फ़ील्ड एक Category इकाई है जिसे मैं पुनर्प्राप्त करना चाहता हूं।

Datastore ds = null; 

Shop shop = ds.createQuery(Shop.class).retrievedFields(true, "primeCategory").get(); 

मैं वास्तव में क्या मैं यहाँ हो रही है कर यकीन नहीं है: मैं कुछ है कि प्राप्त करने के लिए अफ़ीम का सत्त्व की वेबसाइट में लगता है देखा।

यह अच्छा होगा अगर कोई मुझे समझा सके कि यह तरीका है और मुझे इसे कैसे करना चाहिए, साथ ही साथ एक उदाहरण प्रदान करना।

+0

मैं निश्चित रूप से जांच करूँगा: जोंगो एक ओडीएम विकल्प के रूप में। http://jongo.org/ और https://github.com/alexanderjarvis/play-jongo सिर्फ इसलिए कि अफ़ीम का सत्त्व एटीएम पर ज्यादा सक्रिय विकास नहीं है वहाँ। – Marc

+0

आप जो कर रहे हैं वह सही दिखता है। क्या 'दुकान' ऑब्जेक्ट क्वेरी नल द्वारा लौटाया गया है? यदि नहीं, तो 'shop.primeCategory' शून्य है? ध्यान रखें कि आप एक प्रश्न बना रहे हैं जो सभी दुकान वस्तुओं को पायेगा लेकिन आप 'get()' को कॉल कर रहे हैं ताकि आप केवल पहली दुकान ऑब्जेक्ट वापस प्राप्त कर सकें। – InPursuit

+0

दुकान और दुकान। प्राइम श्रेणी शून्य नहीं है। मैं सिर्फ यह जानना चाहता हूं कि यह करने का तरीका है या हो सकता है कि मुझे कुछ याद आ रहा है ... – elad

उत्तर

6

कोशिश इस

Shop.createQuery().retrievedFields(true, "primeCategory").get() 
+0

ठीक है, लौटा हुआ ऑब्जेक्ट (दुकान) सभी क्षेत्रों में शून्य था, और प्रधान श्रेणी भी। :( – elad

0
Shop shop = ds.createQuery (Shop.class).retrievedFields (true,"primeCategory","Other_field_1","Other_field_2").get(); 

इस तरह दस्तावेज़ को पुनः प्राप्त होगा:

{ 
    "_id":ObjectId("..."), 
    "primeCategory":{ 
         ... 
        }, 
    "Other_field_1":"....", 
    "Other_field_2":"...." 

} 

और आप एक अच्छी कोशिश कर रहे हैं।

+0

आपने मुझे टास्क एनालिसिस क्लास के साथ उलझन में डाल दिया है। टास्कएनलिसिस.क्लास को दुकान के साथ बदला जाना चाहिए - कृपया अपना उत्तर संपादित करें। क्लास और दुकान ऑब्जेक्ट के अन्य सभी फ़ील्ड शून्य हो जाएंगे। – elad