2015-05-05 46 views
0

我很清楚Realm中没有外键。但是我遇到了这个问题。我以规范化的方式接收数据,我必须弄清楚如何正确地坚持这种关系。手动更新外键。

例子:

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

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

我收到这样的:

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

我怎么能存储在我现有的领域对象这种类型的数据?

回答

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

感谢您的回答。我没有解释说我没有任何保证,说明任何一个对象都已经在Realm中。所以我可以使用你提供的答案,只有在我肯定知道对象已经在Realm中的情况下才提供。 – vivascu

+0

根据JSON的组织方式,如果使用Realm.createOrUpdateFromJson()插入用户/电子邮件对象,然后运行以上操作,仍然可以使用我的答案。 –