2015-05-05 42 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()插入用戶/電子郵件對象,然後運行以上操作,仍然可以使用我的答案。 –