'RealmNoticeModelClass' tiene una clave primaria, use 'createObject (Class <E>, Object)' en su lugar
Después de actualizar el dominio de 1.1.0
a 2.0.2
. Consigo este error mientras que transporta el objeto. En la versión anterior estaba funcionando bien.
Io.realm.exceptions.RealmException: 'RealmNoticeModelClass' tiene una clave primaria, use 'createObject (Class, Object)' en su lugar.
- El método findFirst () del dominio devuelve null
- Cerrar instancia de Realm después de la ejecución
- Clase de datos Kotlin de RealmObject
- Realm.io Android mejor enfoque para obtener los últimos 20 elementos de una tabla
- RealmMigrationNeededException al cambiar el modelo de Realm
E/AndroidRuntime: FATAL EXCEPTION: main Process: com.rana.sahaj.myyu, PID: 20202 io.realm.exceptions.RealmException: 'RealmNoticeModelClass' has a primary key, use 'createObject(Class<E>, Object)' instead. at io.realm.Realm.createObjectInternal(Realm.java:821) at io.realm.Realm.createObject(Realm.java:802) at com.rana.sahaj.myyu.notice.NoticeOnItemSelectedActivity$1$2.onSuccess(NoticeOnItemSelectedActivity.java:162) at com.rana.sahaj.myyu.notice.NoticeOnItemSelectedActivity$1$2.onSuccess(NoticeOnItemSelectedActivity.java:156) at com.google.android.gms.tasks.zze$1.run(Unknown Source) at android.os.Handler.handleCallback(Handler.java:733) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:136) at android.app.ActivityThread.main(ActivityThread.java:5052) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:609) at dalvik.system.NativeStart.main(Native Method)
El código es
realm.beginTransaction(); RealmNoticeModelClass realmNoticeModelClass = realm.createObject(RealmNoticeModelClass.class); realmNoticeModelClass.setDocUrl(DocUrl1); realmNoticeModelClass.setHashname(heading); realmNoticeModelClass.setContent(contentString); realmNoticeModelClass.setTime(getIntent().getExtras().getString("notice_time")); realmNoticeModelClass.setPicurl(picUrlName); realmNoticeModelClass.setUserPic(getIntent().getExtras().getString("image_user_notice")); realmNoticeModelClass.setPdfUrl(PdfUrl); realmNoticeModelClass.setPicOffline(SnapshotKey); realmNoticeModelClass.setMetaType(null); realmNoticeModelClass.setTimeStamp(SnapshotKey); realm.commitTransaction();
N RealmNoticeModelClass
public class RealmNoticeModelClass extends RealmObject { @PrimaryKey private String timeStamp; private String Content; @Index private String UserPic; private String Hashname; private String picurl; private String time; private String picOffline; private String pdfUrl; private String docUrl1; private String metaType; public String getMetaType() { return metaType; } public void setMetaType(String metaType) { this.metaType = metaType; } public String getDocUrl() { return docUrl1; } ... other getters setters }
- Android Realm copyToRealmOrUpdate crea duplicados de objetos anidados
- Error irrecuperable. Mremap (): Falló: Fuera de memoria en la línea 188 io_realm_internal_SharedGroup.cpp
- Cómo cerrar el reino abierto por Realm.getDefaultInstance?
- Establecer valor en un objeto realm
- Adición de objetos independientes a una RealmList
- Utilice bases de datos pre-pobladas con Realm
- Cómo utilizar Realm asObservable con el operador concat () de RxJava?
- Realm query equalTo resultados en nullpointerexception
Las claves primarias son inmutables desde Realm 2.0.0, lo que significa que no se pueden modificar después de que el objeto se haya creado.
Teniendo en cuenta que tiene una clave primaria, el objeto debe crearse con su valor de clave principal establecido.
En su caso, esta clave primaria es
@PrimaryKey private String timeStamp;
Esto significa que esta línea de código fallará:
RealmNoticeModelClass realmNoticeModelClass = realm.createObject(RealmNoticeModelClass.class); realmNoticeModelClass.setTimeStamp(SnapshotKey);
Y debería ser
RealmNoticeModelClass realmNoticeModelClass = realm.createObject(RealmNoticeModelClass.class, SnapshotKey);