Established Organization:
Organization organization = realm.createObject(Organization.class); // Create a new object OrganizationId organizationId = realm.createObject(OrganizationId.class); organizationId.setAggregateId("1"); organization.setOrganizationId(organizationId); organization.setOrganizationName("1- "); organization.setAddress(": . , . , 2"); organization.setPhoneNumber(".: (+99871) 214-51-01, 214-50-86, 214-50-43"); organization.setKey(organization.getOrganizationName().toLowerCase());
When I add a new doctor to this organization, everything is in order. The application works without errors:
Doctor doctor = realm.createObject(Doctor.class); //FULL NAME FullName fullName = realm.createObject(FullName.class); fullName.setFirstName("Joe"); fullName.setLastName("Richard"); fullName.setMiddleName("Brown"); doctor.setFullName(fullName); //CONTACTS Contacts contacts = realm.createObject(Contacts.class); RealmList<PhoneNumber> phoneNumberRealmList = new RealmList<>(); PhoneNumber pn = realm.createObject(PhoneNumber.class); pn.setPhoneNumber("+998903735173"); phoneNumberRealmList.add(0, pn); contacts.setPhoneNumbers(phoneNumberRealmList); doctor.setContacts(contacts); //ORGANIZATION doctor.setOrganization(organization); //SPECIALIZATION RealmList<Specialization> specializationRealmList = new RealmList<>(); Specialization specialization = realm.createObject(Specialization.class); specialization.setSpecializationName(""); specializationRealmList.add(0, specialization); doctor.setSpecializationList(specializationRealmList);
When I add a second doctor, I get an error (error stack below):
Doctor doctor2 = realm.createObject(Doctor.class);// //FULL NAME FullName fullName2 = realm.createObject(FullName.class); fullName2.setFirstName("Bob"); fullName2.setLastName("Richardson"); fullName2.setMiddleName("Brownowich"); doctor2.setFullName(fullName2); //CONTACTS Contacts contacts2 = realm.createObject(Contacts.class); RealmList<PhoneNumber> phoneNumberRealmList2 = new RealmList<>(); PhoneNumber pn2 = realm.createObject(PhoneNumber.class); pn2.setPhoneNumber("+998903720757"); phoneNumberRealmList2.add(1, pn2); contacts2.setPhoneNumbers(phoneNumberRealmList2); doctor2.setContacts(contacts2); //ORGANIZATION doctor2.setOrganization(organization); //SPECIALIZATION RealmList<Specialization> specializationRealmList2 = new RealmList<>(); Specialization specialization2 = realm.createObject(Specialization.class); specialization2.setSpecializationName(""); specializationRealmList2.add(1, specialization2); doctor2.setSpecializationList(specializationRealmList2);
The error actually looks like this:
Process: uz.sunet.wm, PID: 5505 java.lang.RuntimeException: unable to start ComponentInfo activity {uz.sunet.wm / uz.sunet.wm.activities.MainActivity}: io.realm.exceptions.RealmException: Violation of the main key does not work. Value already exists: 0 at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2338) at android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2390) at android.app.ActivityThread.access $ 800 (ActivityThread.java:151 ) at android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1321) on android.os.Handler.dispatchMessage (Handler.java:110) on android.os.Looper.loop (Looper.java:193) at android .app.ActivityThread.main (ActivityThread.java∗292) in java.lang.reflect.Method.invokeNative (native method) in java.lang.reflect.Method.invoke (Method.java UP15) at com.android.internal .os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:824) at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:640) in dalvik.system.NativeStart.main (native method) Called: io.realm.exceptions.RealmException: primary key constraint does not work. The value already exists: 0 in io.realm.internal.Table.throwDuplicatePrimaryKeyException (Table.java:731) in io.realm.internal.Table.addEmptyRow (Table.javahaps80) in io.realm.Realm.createObject (Realm. java: 1037) at uz.sunet.wm.data.MyRealm.initiateRealmData (MyRealm.java:88) at uz.sunet.wm.activities.MainActivity.onCreate (MainActivity.java:60) at android.app.Activity.performCreate (Activity.java:5264) at android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1088) at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2302) at android.app.ActivityThread.handleLaunchActivity (ActivityThread.java: 2390) at android.app.ActivityThread.access $ 800 (ActivityThread.java:151) at android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1321) on android.os.Handler.dispatchMessage (Handler.java:110) at android.os.Looper.loop (Looper.java:193) at andr oid.app.ActivityThread.main (ActivityThread.java∗292) in java.lang.reflect.Method.invokeNative (native method) in java.lang.reflect.Method.invoke (Method.java UP15) at com.android. internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:824) at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:640) in dalvik.system.NativeStart.main (native method)
I have no idea what is going on. For the first doctor, I set id - 0. Second - 1. However, I get this error. What am I doing wrong? How to solve this problem?
source share