मुझे एक ऐसा एप्लिकेशन लिखने की ज़रूरत है जिसके साथ मैं वसंत-डेटा और मोंगोडब का उपयोग कर जटिल प्रश्न कर सकता हूं। मैं मोंगो रिपोजिटरी का उपयोग करके शुरू कर रहा हूं लेकिन उदाहरण खोजने या सिंटैक्स को वास्तव में समझने के लिए जटिल प्रश्नों के साथ संघर्ष कर रहा हूं।स्प्रिंग डेटा के मोंगो टेम्पलेट और मोंगो रिपोजिटरी के बीच क्या अंतर है?
मैं प्रश्नों के बारे में इस तरह बात कर रहा हूँ:
@Repository
public interface UserRepositoryInterface extends MongoRepository<User, String> {
List<User> findByEmailOrLastName(String email, String lastName);
}
या JSON आधारित प्रश्नों के उपयोग जो मैं परीक्षण और त्रुटि के द्वारा की कोशिश की क्योंकि मैं वाक्य रचना सही नहीं मिलता है। Mongodb प्रलेखन पढ़ने के बाद भी (गलत वाक्यविन्यास के कारण गैर-कामकाजी उदाहरण)।
@Repository
public interface UserRepositoryInterface extends MongoRepository<User, String> {
@Query("'$or':[{'firstName':{'$regex':?0,'$options':'i'}},{'lastName':{'$regex':?0,'$options':'i'}}]")
List<User> findByEmailOrFirstnameOrLastnameLike(String searchText);
}
सभी दस्तावेज़ को पढ़ने के बाद ऐसा लगता है कि mongoTemplate
कहीं बेहतर तो MongoRepository
प्रलेखित है लगता है। मैं निम्नलिखित प्रलेखन की चर्चा करते हुए हूँ:
http://static.springsource.org/spring-data/data-mongodb/docs/current/reference/html/reference.html
आप मुझे बता सकते हैं क्या और अधिक सुविधाजनक और शक्तिशाली उपयोग करने के लिए है? mongoTemplate
या MongoRepository
? क्या दोनों परिपक्व हैं या उनमें से एक को और अधिक सुविधाओं की कमी है?
हाय ओलिवर, यह वास्तव में काम नहीं करता है। वसंत-डेटा कस्टम नाम से एक क्वेरी स्वत: उत्पन्न करने का प्रयास करता है। yourCustomMethod()। यह कहेंगे कि "आपका" डोमेन क्लास में मान्य फ़ील्ड नहीं है। मैंने मैनुअल का पालन किया और यह भी जांच की कि आप वसंत-डेटा-जेपीए-उदाहरण कैसे कर रहे हैं। कोई भाग्य नहीं। जैसे ही मैं रिपोजिटरी क्लास में कस्टम इंटरफ़ेस का विस्तार करता हूं, वसंत-डेटा हमेशा ऑटो-जेनरेट करने का प्रयास करता है। केवल अंतर यह है कि मैं मोंगो रिपोजिटरी का उपयोग कर रहा हूं, न कि क्रूड रिपोजिटरी क्योंकि मैं अब इटरेटर के साथ काम नहीं करना चाहता हूं। यदि आपको संकेत मिलेगा तो इसकी सराहना की जाएगी। –
सबसे आम गलती कार्यान्वयन वर्ग को गलत नाम देना है: यदि आपके बेस रेपो इंटरफ़ेस को 'योर रिपोजिटरी' कहा जाता है, तो कार्यान्वयन वर्ग को 'YourRepositoryImpl' नाम दिया जाना चाहिए। क्या यह मामला है? यदि ऐसा है तो मुझे गिटहब पर एक नमूना प्रोजेक्ट को देखने में खुशी होगी या जैसे ... –
हाय ओलिवर, आईएमएल क्लास को गलत माना गया था जैसा आपने माना है। मैंने नाम समायोजित किया और ऐसा लगता है कि यह अब काम कर रहा है। आपकी प्रतिक्रिया के लिए बहुत बहुत धन्यवाद। इस तरह से विभिन्न तरह के क्वेरी विकल्पों का उपयोग करने में सक्षम होने के लिए यह वास्तव में अच्छा है। अच्छी तरह से सोचा! –