领域:如果我们更新领域对象的主键会发生什么?

时间:2016-01-19 13:45:24

标签: realm

我刚刚开始使用领域,我创建了一个独立的对象,然后我为该对象设置了唯一的id并将其复制到领域。

public class User extends RealmObject {

    @PrimaryKey
    private int  id;
    private String          name;
}

User user = new User();
user.setName("some name");
user.setId(somePrimaryKey);
realm.copyToRealm(user);

稍后我正在更新同一个对象的主键(id)

user.setId(newPrimaryKey);

我观察到这导致了领域的重复。我只是想知道它在境界中是否正常?

1 个答案:

答案 0 :(得分:1)

在您的源代码中,user在调用realm.copyToRealm(user)后仍然是独立对象。

您应该向用户提供返回值,例如user = realm.copyToRealm(user);,然后用户将由Realm管理。

用户由Realm管理后,当您致电user.setId(newPrimaryKey);并且领域中存在newPrimaryKey的对象时,系统会引发RealmPrimaryKeyConstraintException