我正在使用Realm 1.2.0 for 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);
}

关于android - 在Android的Realm中从 child 访问 parent ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39642849/

10-12 00:20
查看更多