繼官方文件指南:Realm Relationships問題:多到一,它創建的副本對象
我試着寫的多到一的關係一些代碼,我發現有些事情是不一致。
兩個POJO Contace.java
和Email.java
定義如下:
public class Email extends RealmObject {
private String address;
private boolean active;
// ... setters and getters left out
}
public class Contact extends RealmObject {
private String name;
private Email email;
// ... setters and getters left out
}
情況1:創建正常Email
對象和分配給不同的Contact
contactA和contactB。
Email email = new Email();
email.setAddress("[email protected]");
email.setActive(true);
Contact contactA = new Contact();
contactA.setName("Bear");
contactA.setEmail(email);
Contact contactB = new Contact();
contactB.setName("Monkey");
contactB.setEmail(email);
realm.beginTransaction();
realm.copyToRealm(contactA);
realm.copyToRealm(contactB);
realm.commitTransaction();
我打電話realm.copyToRealm()
後,兩名Email
對象將在這裏產生。所以,當我從Realm查詢Contact
時,一個Email
對象會變成兩個不同的對象?我認爲這不再是多對一的關係,它只是成爲一對一的關係。
情況2:呼叫realm.createObject()
創建代理Email
對象和兩個代理Contact
對象,並指定電子郵件contactA和contactB。
realm.beginTransaction();
Email email = realm.createObject(Email.class);
email.setAddress("[email protected]");
email.setActive(true);
Contact contactA = realm.createObject(Contact.class);
contactA.setName("Bear");
contactA.setEmail(email);
Contact contactB = realm.createObject(Contact.class);
contactB.setName("Monkey");
contactB.setEmail(email);
realm.commitTransaction();
在這裏我們可以看到在表中只有一個Email對象,這就是我所期待的,正如上面的文檔中描述。
那麼,爲什麼情況1和情況2沒有一致性?這是否是情況1中的錯誤?或者我錯過了什麼?
境界版(S):0.88.3
的Android Studio版本:2.0
期待您的回覆!謝謝!
copyToRealm()調用聯繫人對象,聯繫人應創建2次,但我不認爲電子郵件應該創建2次,因爲它是多對一關係,而不是一對一關係,情境2是什麼我期望。或者你能解釋情況1的原則嗎?謝謝。 – codezjx
也許你應該嘗試使用copyToRealmOrUpdate()而不是copyToRealm() –