java - Morphia equal ignoring fields -
मेरे पास निम्न वर्ग हैं:
@ एंटीटी सार्वजनिक वर्ग लपेटें {निजी मेटाडेटा मेटा ; // और अधिक ...} सार्वजनिक कक्षा मेटाडाटा {निजी सूची & lt; छवि & gt; इमेजिस; निजी स्ट्रिंग मूल्य; निजी पूर्णांक मूल्य; // और अधिक ...} सार्वजनिक वर्ग छवि {निजी स्ट्रिंग यूआरएल; निजी स्ट्रिंग हैश; @ ओवरराइड पब्लिक इंट हैशोड () {int h = 7; H = 89 * h + ऑब्जेक्ट्स.hashCode (this.hash); } @ ओवरराइड पब्लिक बूलियन बराबर (वस्तु obj) {यदि (obj == नल) {वापसी झूठी; } अगर (getClass ()! = Obj.getClass ()) {वापसी झूठी; } अंतिम छवि अन्य = (छवि) obj; वापसी (! Objects.equals (this.hash, other.hash)); }} सामान्य क्वेरी ds.createQuery (wrap.class) .field ("मेटा")। बराबर (अन्य मेटाडेटा); सभी क्षेत्रों की तुलना करेगा ( जैसा सोचा था)। जैसा कि आप कोड में देख सकते हैं, वर्ग छवि ओवरराइड बराबर होती है और क्षेत्र url को नजरअंदाज करने के लिए हैशकोड। यह जावा के लिए काम करता है लेकिन माफिया में कुछ फ़ील्ड्स की अनदेखी करने के लिए एक प्रश्न पूछना (.equal या .filter या कुछ और) का उपयोग करने का एक तरीका है?
बराबर () मोंगोडीबी में एक तुलना है बराबर () जावा में तुलना है दोनों इंटरैक्ट नहीं करते हैं। आपको .field ("meta.price") के साथ एक अधिक जटिल डेटाबेस क्वेरी डालनी होगी। बराबर (मेटा.जेटप्रक्रिया ()) और इतने पर।
Comments
Post a Comment