在使用Android Room处理对象之间的关系时感到困惑



使用 android 数据持久库 Android Room 时,如何直接将包含所有字段值的Comment对象插入数据库,以及如何将所有值作为注释对象查询出来?

据我所知,我不能将Comment对象用作房间目录中的Entity,因为字段replyComment也是一个Comment对象。即使我使用 @Relations 注释定义 POJO,我也无法查询出Comment对象,因为Comment对象中包含一对一关系和一对多关系。

除了更改Comment模型定义(例如使用外键、对插入操作和查询操作产生影响)之外,还有其他方法吗?

public class Comment { 
    public String content;
    public String id;
    public Comment replyComment;
    public User user;
    public List<ImageMedia> images;
}
public class User{
    public String id;
    public String name;
}
public class ImageMedia{
    public String key;
    public String url;
}

除了更改注释模型定义之外,还有其他方法吗

不。您需要创建一组对数据库结构进行建模的实体,其中子项具有指向其父项的外键列:

  • CommentEntity有一个外键返回CommentEntity以进行回复
  • CommentEntity有一个外键回到UserEntity
  • ImageMediaEntity有一个外键返回CommentEntity

最新更新