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);
}