手动更新外键。

时间:2015-05-05 09:55:05

标签: android realm

我非常清楚Realm中没有外键。但我遇到了这个问题。我以标准化的方式接收数据,我必须弄清楚如何正确地保持关系。

示例:

class User{
  private int id;
  private Email email;
}

class Email{
  private int id;
  private String address;
}

我收到的内容如下:

{user={id:1, emailId:1}}

如何在现有领域对象中存储此类数据?

1 个答案:

答案 0 :(得分:2)

您必须自己解析JSON才能设置链接。从您的描述中不清楚用户和电子邮件是否已经在Realm中,但如果是这种情况,我会做这样的事情:

class User{
  @PrimaryKey
  private int id;
  private Email email;
}

class Email{
  @PrimaryKey
  private int id;
  private String address;
}


JSONObject json = new JSONObject("{id:1, emailId:1}");

realm.beginTransaction();
User user = realm.where(User.class).equalTo("id", json.getInt("id")).findFirst();
Email email = realm.where(Email.class).equalTo("id", json.getInt("emailId")).findFirst();
user.setEmail(email);
realm.commitTransaction();