2015-07-05 8 views

उत्तर

8

वर्तमान में Relam का समर्थन नहीं करता auto_increment

GitHub

पर इस मुद्दे को देखने के आप इस

realm.executeTransaction(new Realm.Transaction() { 
    @Override 
    public void execute(Realm realm) { 
     // increment index 
     Number num = realm.where(dbObj.class).max("id"); 
     int nextID; 
     if(num == null) { 
      nextID = 1; 
     } else { 
      nextID = num.intValue() + 1; 
     } 
     dbObj obj = realm.createObject(dbObj.class, nextID); 
     // ... 
    } 
} 
+1

इस पर किसी भी अद्यतन:

क्षेत्र Git हब में एक लंबा विचार-विमर्श करता है, तो आप और अधिक संदर्भ की जरूरत नहीं है? – ralphgabb

+0

प्रति cmelchior, "स्वतः बढ़ी हुई कुंजी बस एक वितरित सेटिंग में काम नहीं करती है, इसलिए ऐसा कुछ नहीं है जिसे हम रीयल लाइब्रेरी में ही समर्थन प्रदान करना चाहते हैं।" (https://github.com/realm/realm-java/pull/3875#issuecomment-265435130) – markproxy

1

की तरह काम के आसपास ले जा सकते हैं जावा बाध्यकारी अभी तक प्राथमिक कुंजी का समर्थन नहीं करता है, लेकिन यह है रोडमैप पर और उच्च प्राथमिकता के साथ - देखें: https://groups.google.com/forum/#!topic/realm-java/6hFqdyoH67w । समाधान के लिए आप पैदा चाबी के लिए कोड के इस टुकड़े का उपयोग कर सकते हैं:

int key; 
try { 
    key = realm.where(Child_pages.class).max("id").intValue() + 1; 
} catch(ArrayIndexOutOfBoundsException ex) { 
key = 0; // when there is no object in the database yet 
} 

मैं बेहतर प्रदर्शन (max("id") हर बार के लिए क्वेरी करने की कोई जरूरत) के साथ एक अधिक सामान्य समाधान के रूप में singleton factory for generating primary keys का उपयोग करें। Document how to set an auto increment id?

+0

हाय, कृपया, सिंगलटन का उपयोग कैसे करें समझा सकते हैं? मैंने अभी गस्ट की जांच की लेकिन मुझे नहीं पता कि यह मेरे कोड में कैसे जोड़ना है। –

+0

1 प्रारंभ करें जब ऐप 'प्राथमिकKeyFactory.getInstance() को प्रारंभ करके शुरू होता है। प्रारंभ करें' तो आप दिए गए वर्ग – zacheusz

+0

के लिए अगली कुंजी प्राप्त करने के लिए 'PrimaryKeyFactory.getInstance()। NextKey 'पर कॉल कर सकते हैं तो क्या मैं' PrimaryKeyFactory.getInstance() जोड़ सकता हूं। मेरे आवेदन के प्रारंभ में केवल एक बार शुरू करें, या मुझे इसे किसी भी कक्षा में जोड़ना चाहिए जिसे मैं इसका उपयोग करना चाहता हूं? –

संबंधित मुद्दे