在我的Android项目中,我使用Realm作为数据库,并将Retrofit 2用于所有Web请求。实际上,我在Realm中存储关系对象时存在一些问题。
我有类似的东西:
class ObjectA {
@PrimaryKey
Integer id;
String name;
ObjectB details;
}
class ObjectB {
@PrimaryKey
Integer id;
String shortName;
String longName;
}
我以这种方式获取数据:
Call<ObjectA> call = getApiService().getMyObject();
call.enqueue(new Callback<ObjectA>() {
@Override
public void onResponse(Call<ObjectA> call, final Response<ObjectA> response) {
// Check if response is OK and other stuff
// Store object in Realm
Realm.getDefaultInstance().executeTransaction(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
realm.copyToRealmOrUpdate(response.body());
}
});
}
@Override
public void onFailure(Call<ObjectA> call, Throwable t) {
// TBD
}
});
之后,我在我的Realm数据库中看到存储在适当表中的两个对象(ObjectA和ObjectB的实例)。问题是,ObjectB的实例在 details 列集0中有,所以我没有两个对象的关系。 您是否有任何建议或提示我如何解决此问题并妥善存储具有适当关系的两个对象?
修改
我的JSON:
{
"id": 666,
"name": "Dummy Object",
"details": {
"id": 123,
"shortName": "Short Dummy Name",
"longName": "Long Dummy Name"
}
}