Realm-java: Primary key value is not a String: a71c4aa4-dce5-46a4-9087-af7d22ce464c

Created on 26 Dec 2016  路  7Comments  路  Source: realm/realm-java

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

T-Help

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:

realm.createObject(EventDB.class, event);

Replaced and worked to:
realm.createObject(EventDB.class, event.getId());

All 7 comments

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());

Was this page helpful?
0 / 5 - 0 ratings