Android

时间:2016-12-01 03:16:17

标签: android realm

我遇到Realm抱怨重复主键的问题。这是问题所在:

我有两个Realm Classes。我需要单独访问它们,而且,从一个到另一个之间存在多对一的关系。

主题:

public class Topic extends RealmObject{

    @PrimaryKey
    private String id;

    private String subject;
    }

和问题:

public class Question extends RealmObject {

    @PrimaryKey
    private String _id;
    private RealmList<Option> options = null;
    private RealmList<Answer> answer;
    private Topic topic;
}

不止一个问题可以有相同的主题。但是,当我尝试创建Realm Question DB时,Realm会抛出RealmPrimaryKeyConstraintException:Value已经存在:exception。并且使用主题类的主键抛出异常。

我该如何避免这种情况?

1 个答案:

答案 0 :(得分:0)

我在Realm Github中找到了来自this issue的解决方案。我的代码应该已经有效,因为我已经使用了两个类的主键和copyToRealmOrUpdate来创建对象。

但是,我在Topics表之前创建了Questions表,这就是Realm尝试将新对象复制到Topics表的原因。显然,copyToRealmOrUpdate不会自动为嵌套的Realm对象假设copyToRealmOrUpdate行为。

只是颠倒创建它的顺序,因为(从Github链接),如果两个类都有主键,Realm处理已经存在的对象就好了。

这可能是Realm中的一个错误?