Android 在 Realm 中从子项访问父项
Access parent from child in Realm for Android
我正在使用 Realm 1.2.0 为 Android 创建一个聊天应用程序。
这是我创建的两个最小化模型:
public class Room extends RealmObject {
private String name;
private RealmList<Message> messages;
}
public class Message extends RealmObject {
@PrimaryKey
private long id;
private String text;
}
使用这些模型,我可以获得特定房间中的所有消息。问题是,我也想通过消息进入房间。
例如,这是可能的(从父级访问子级):
room.getMessages()
但我也想从子访问父,像这样:
message.getRoom()
这在 Realm 中是否可行,而无需再次手动查询所有房间?
这个概念叫做 backlink
,他们还没有。事实上,它们还处于设计阶段左右,因此需要一段时间才能使用自动逆关系。
所以目前你需要自己维护双方的关系。
public class Room extends RealmObject {
private String name;
private RealmList<Message> messages;
}
public class Message extends RealmObject {
@PrimaryKey
private long id;
private String text;
private Room room;
}
r.executeTransaction((realm) -> {
Room room = realm.where(Room.class).equalTo("name", name).findFirst();
Message message = new Message();
message.setId(getNextId());
message.setText(text);
message.setRoom(room);
message = realm.copyToRealmOrUpdate(message);
room.getMessages().add(room);
}
我正在使用 Realm 1.2.0 为 Android 创建一个聊天应用程序。
这是我创建的两个最小化模型:
public class Room extends RealmObject {
private String name;
private RealmList<Message> messages;
}
public class Message extends RealmObject {
@PrimaryKey
private long id;
private String text;
}
使用这些模型,我可以获得特定房间中的所有消息。问题是,我也想通过消息进入房间。
例如,这是可能的(从父级访问子级):
room.getMessages()
但我也想从子访问父,像这样:
message.getRoom()
这在 Realm 中是否可行,而无需再次手动查询所有房间?
这个概念叫做 backlink
,他们还没有。事实上,它们还处于设计阶段左右,因此需要一段时间才能使用自动逆关系。
所以目前你需要自己维护双方的关系。
public class Room extends RealmObject {
private String name;
private RealmList<Message> messages;
}
public class Message extends RealmObject {
@PrimaryKey
private long id;
private String text;
private Room room;
}
r.executeTransaction((realm) -> {
Room room = realm.where(Room.class).equalTo("name", name).findFirst();
Message message = new Message();
message.setId(getNextId());
message.setText(text);
message.setRoom(room);
message = realm.copyToRealmOrUpdate(message);
room.getMessages().add(room);
}