Загружать сложные структуры данных (с отношениями и наследованием) с помощью Room - PullRequest
1 голос
/ 12 марта 2019

У меня в проекте сложные отношения сущностей с наследованием и классическими отношениями. Я ищу элегантный способ загрузки данных, содержащих автоматически связанные данные, следующая ситуация должна объяснить проблему.

  1. Предположим, у меня есть следующие примеры отношений сущностей: Example relation of objects to show the problem
  2. Теперь я могу создать классический @Entity класс для Cat, Dog, PetHolder и Holder. Работает нормально.
  3. Теперь я могу создать для каждой сущности класс @Dao, который обрабатывает загрузку и сохранение данных для сущности. Поэтому я создаю CatDao, DogDao, PetHolderDao и HolderDao. В каждом @Dao классе я игнорирую поля, которые зависят от другого объекта: listHoldPets в Holder, pet и holder в PetHolder и petHolder в Pet. Сейчас например загрузка всех держателей, содержащих только имя, очень проста с помещением и работает нормально. Также хорошо работает сохранение каждого объекта.
  4. Но теперь возникает проблема. Я хочу загрузить всех владельцев со списком petHolders. И каждый питомец должен также содержать питомца. Теперь вопрос в том, как сделать это элегантным способом. Решение Android, представленное для отношений, работает только для легких отношений. Так, например, я мог бы создать HolderWithPetHolder класс и HolderWithPetHolderDao для него. С аннотацией @Relation я могу автоматически загрузить все petHolders для holder в объект HolderWithPetHolder. Но все объекты petHolder в списке не будут содержать объект Pet.

Если у вас есть пример кода, ссылка или просто идея по этому поводу, пожалуйста, дайте мне знать. Спасибо!

Ссылки:

Правила для номеров Android

Android Room @ Ссылка

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...