relam.io连接表的问题,而不是加载链接

时间:2015-09-11 15:56:34

标签: android realm

我已经绘制了以下表格,这里保持简单......

Product
{
   String Id;
   String Name;
}

Form
{
   String Id;
   String Firstname;
   String Surname;
   Journey Journey;
   RealmList<FormProduct> Products;
}

Journey
{
   String Id;
   String Name;
}

FormProduct
{
   String Id;
   Product Product;
   Form Form;
   int Quantity;
}

如您所见,FormProduct是Form和Product之间的连接表。我遇到的问题是,当我从领域中检索表单时,它不会为我填充产品,Journey链接确实可以正常工作,但这是一个简单的连接。我知道FormProducts肯定是保存的,因为如果我进行查询,例如

RealmResults<FormProducts> formProducts = realm.where(FormProducts.class).equalTo("Form.Id", formId[0]).findAll();

它带回了我期待的数据。这是检索FormProducts的唯一方法,还是链接自动加载(lazyload?)对我来说?

我正在使用版本'io.realm:realm-android:0.82.1'。必须说我真的很喜欢领域,它的方式比我试过的任何ORM更容易,更快。这是我到目前为止遇到的唯一障碍,这可能是我做错了!感谢任何帮助。

修改

保存表单产品的代码

Form realmForm = realm.copyToRealmOrUpdate(params[0]);

for (Product rp : realmProducts) {

FormProducts formProducts = new FormProducts();
formProducts.setId(UUID.randomUUID().toString());
formProducts.setForm(realmForm);
formProducts.setProduct(rp);                   
}

realm.copyToRealm(formProducts);
}

检索表单的代码

Form form = realm.where(Form.class).equalTo("Id", formId).findFirst();

以上代码不会自动检索产品。我必须手动拨打

RealmResults<FormProducts> formProducts = realm.where(FormProducts.class).equalTo("Form.Id", formId).findAll();

0 个答案:

没有答案