Запутаться в отношениях с объектами с помощью Android Room

При использовании Android-постоянная библиотека данных Android Room, как я могу напрямую вставить Comment Объект в базу данных, включая все значения поля, и как я могу запросить все значения в качестве объекта комментария?

Как я знаю, я не могу использовать Comment Объект как Entity в каталоге комнаты, из-за поля replyComment также Comment Объект. И я не могу запросить Comment Объект даже я определяю POJO, используя @Relations аннотации либо из-за отношений один-к-одному и отношений один-ко-многим, все включены в 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;
}

1 ответ

Есть ли другой способ, кроме изменения определения модели комментария

Нет. Вам нужно будет создать набор сущностей, которые моделируют структуру базы данных, где у детей есть столбцы внешнего ключа, указывающие на их родителей:

  • CommentEntity имеет внешний ключ к CommentEntity за ответ
  • CommentEntity имеет внешний ключ к UserEntity
  • ImageMediaEntity имеет внешний ключ к CommentEntity