为什么与 RealmObject 相关的 RealmList 不更新?
Why doesn't RealmList related to a RealmObject updated?
我有一些具有这种结构的领域数据:
public class Member extends RealmObject {
@PrimaryKey
private int id;
private String name;
private String image_url;
}
public class Department extends RealmObject {
@PrimaryKey
private int id;
// some another fields...
private RealmList<Member> members;
}
public class Meeting extends RealmObject {
@PrimaryKey
private int id;
private String title = "";
private RealmList<Member> members = new RealmList<>();
}
我想要 select 部门的一些成员并添加到 selected 会议。
//properties
int departmentId = 1;
int meetingId = 4;
Meeting meeting;
Department department;
Realm realm;
//declaration
realm = Realm.getDefaultInstance();
realm.beginTransaction();
meeting = realm.where(Meeting.class).equalTo("id", meetingId).findFirst();
department = realm.where(Department.class).equalTo("id", departmentId).findFirst();
//add members
for (Member member : department.getMembers()) {
if (!thereIsInList(member,meeting.getMembers()))
meeting.getMembers().add(member);
}
//realm update and close
realm.insertOrUpdate(meeting);
realm.commitTransaction();
realm.close();
下一个java代码:
public boolean thereIsInList(Member member, List<Member> mList) {
if (mList == null) return false;
for (Member m : mList) {
if (m.getId() == member.getId()) return true;
}
return false;
}
但我看到新成员与会议无关。
请帮我找出问题所在?
首先在 realm studio 中检查您要查找的 ID 是否正确,并且您需要的列表存在于 realm 中,并引用了各自的 ID。下面的片段处理真实的交易
Realm realmObj;
//declaration
realmObj= Realm.getDefaultInstance();
realmObj.executeTransaction(realm -> {
meeting = realm.where(Meeting.class).equalTo("id", meetingId).findFirst();
department = realm.where(Department.class).equalTo("id", departmentId).findFirst();
//add members
for (Member member : department.getMembers()) {
if (!thereIsInList(member,meeting.getMembers()))
meeting.getMembers().add(member);
}
});
我有一些具有这种结构的领域数据:
public class Member extends RealmObject {
@PrimaryKey
private int id;
private String name;
private String image_url;
}
public class Department extends RealmObject {
@PrimaryKey
private int id;
// some another fields...
private RealmList<Member> members;
}
public class Meeting extends RealmObject {
@PrimaryKey
private int id;
private String title = "";
private RealmList<Member> members = new RealmList<>();
}
我想要 select 部门的一些成员并添加到 selected 会议。
//properties
int departmentId = 1;
int meetingId = 4;
Meeting meeting;
Department department;
Realm realm;
//declaration
realm = Realm.getDefaultInstance();
realm.beginTransaction();
meeting = realm.where(Meeting.class).equalTo("id", meetingId).findFirst();
department = realm.where(Department.class).equalTo("id", departmentId).findFirst();
//add members
for (Member member : department.getMembers()) {
if (!thereIsInList(member,meeting.getMembers()))
meeting.getMembers().add(member);
}
//realm update and close
realm.insertOrUpdate(meeting);
realm.commitTransaction();
realm.close();
下一个java代码:
public boolean thereIsInList(Member member, List<Member> mList) {
if (mList == null) return false;
for (Member m : mList) {
if (m.getId() == member.getId()) return true;
}
return false;
}
但我看到新成员与会议无关。 请帮我找出问题所在?
首先在 realm studio 中检查您要查找的 ID 是否正确,并且您需要的列表存在于 realm 中,并引用了各自的 ID。下面的片段处理真实的交易
Realm realmObj;
//declaration
realmObj= Realm.getDefaultInstance();
realmObj.executeTransaction(realm -> {
meeting = realm.where(Meeting.class).equalTo("id", meetingId).findFirst();
department = realm.where(Department.class).equalTo("id", departmentId).findFirst();
//add members
for (Member member : department.getMembers()) {
if (!thereIsInList(member,meeting.getMembers()))
meeting.getMembers().add(member);
}
});