मैं एक सतत डीबी रखने की कोशिश कर रहा हूं जहां उपयोगकर्ता नाम और ईमेल अद्वितीय हैं।मोंगो डीबी मॉर्फिया - अद्वितीय
http://www.mongodb.org/display/DOCS/Indexes#Indexes-unique%3Atrue
http://code.google.com/p/morphia/wiki/EntityAnnotation
मेरे उपयोगकर्ता वर्ग इस तरह दिखता है:
public class User {
@Indexed(unique = true)
@Required
@MinLength(4)
public String username;
@Indexed(unique = true)
@Required
@Email
public String email;
@Required
@MinLength(6)
public String password;
@Valid
public Profile profile;
public User() {
...
मैं @Indexed (अद्वितीय = true) एनोटेशन का इस्तेमाल किया, लेकिन यह काम नहीं करता। मेरे डीबी में अभी भी डुप्लिकेट हैं।
कोई विचार मैं इसे कैसे ठीक कर सकता हूं?
संपादित करें:
मैं ensureIndexes के बारे में पढ़ा है लेकिन यह एक गलत दृष्टिकोण की तरह, मैं नहीं चाहता कि डुप्लीकेट डेटा अपलोड करने के लिए सिर्फ इतना है कि इसकी वाकई डुप्लिकेट देखना चाहते हैं, लगता है।
मैं इसे तुरंत अवरुद्ध करना चाहता हूं।
try{
ds.save(user);
}
catch(UniqueException e){
...
}
एचएम, मुझे यह नहीं मिला। निश्चित रूप से मैं इसे देख सकता हूं, लेकिन क्या होगा यदि दो उपयोगकर्ता एक ही उपयोगकर्ता नाम के साथ एक ही उपयोगकर्ता नाम पंजीकृत करेंगे? मुझे कुछ ऐसी चीज चाहिए जो परमाणु है। –
डेटाबेस लॉकिंग सिस्टम (पढ़ें, ताले लिखने आदि) में अपना स्वयं का निर्माण है, इसलिए मेरा मानना है कि यदि डेटाबेस स्तर पर अनन्य बाधाएं हैं - एक ही समय में डुप्लिकेट डेटा सहेजना संभव नहीं होगा? –
शायद मैं गलत हूं लेकिन मैंने सोचा कि आपको ऐसा कुछ मतलब है। 'if (user.not_in_db) ds.save (उपयोगकर्ता); 'और यदि मुझे डीबी स्तर पर कोई बाधा नहीं है तो डुप्लिकेट डेटा होगा। –