W/System.err: java.lang.IllegalArgumentException: Primary key value is not a String: a71c4aa4-dce5-46a4-9087-af7d22ce464c
W/System.err: at io.realm.internal.Table.addEmptyRowWithPrimaryKey(Table.java:432)
W/System.err: at io.realm.internal.Table.addEmptyRowWithPrimaryKey(Table.java:387)
W/System.err: at io.realm.Realm.createObjectInternal(Realm.java:864)
realm version: 2.2.0
How does your object look like?
public class MessageRealm extends RealmObject {
private long id;
@PrimaryKey
private String uuid;
private String type;
private String title;
private String content;
}
Can you please show the completed backtrace and some of your code where the exception happens?
sorry, my mistake;(
i did not convert UUID to string,
cause error:
result = realm.createObject(MessageRealm.class, messageItem.uuid());
fixed:
result = realm.createObject(MessageRealm.class, messageItem.uuid().toString());
looks like realm's prompt confused;)
<
Hello!
I'm having the same problem.
Error:
java.lang.IllegalArgumentException: Primary key value is not a String: com.pontodom_app.models.db.EventDB@fa72fc2
This is my structure:
public class EventDB extends RealmObject {
@PrimaryKey
public String id;
public String name;
public String title;
public Date dateTime;
The complete stack:
````
FATAL EXCEPTION: main
Process: com.pontodom_app, PID: 10913
java.lang.IllegalArgumentException: Primary key value is not a String: com.pontodom_app.models.db.EventDB@fa72fc2
at io.realm.internal.OsObject.createWithPrimaryKey(OsObject.java:189)
at io.realm.Realm.createObjectInternal(Realm.java:1026)
at io.realm.Realm.createObject(Realm.java:1001)
at com.pontodom_app.models.db.dao.EventDAO.save(EventDAO.java:18)
at com.pontodom_app.viewModel.main.LoadEventsAction.createRecords(LoadEventsAction.java:75)
at com.pontodom_app.viewModel.main.LoadEventsAction.access$000(LoadEventsAction.java:29)
at com.pontodom_app.viewModel.main.LoadEventsAction$1.onResponse(LoadEventsAction.java:48)
at retrofit2.ExecutorCallAdapterFactory$ExecutorCallbackCall$1$1.run(ExecutorCallAdapterFactory.java:68)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6121)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779)
`````
any thoughts?
@mangar is your realm encrypted?
Just figured....
On createObject method the it's needed to inform a second parameter.
I was using the second parameter the actual object. It's wrong. I has to be the Primary key.
Was:
realm.createObject(EventDB.class, event);
Replaced and worked to:
realm.createObject(EventDB.class, event.getId());
Most helpful comment
Just figured....
On createObject method the it's needed to inform a second parameter.
I was using the second parameter the actual object. It's wrong. I has to be the Primary key.
Was:
Replaced and worked to:
realm.createObject(EventDB.class, event.getId());