У меня в проекте сложные отношения сущностей с наследованием и классическими отношениями. Я ищу элегантный способ загрузки данных, содержащих автоматически связанные данные, следующая ситуация должна объяснить проблему.
- Предположим, у меня есть следующие примеры отношений сущностей:
- Теперь я могу создать классический
@Entity
класс для Cat
, Dog
, PetHolder
и Holder
. Работает нормально.
- Теперь я могу создать для каждой сущности класс
@Dao
, который обрабатывает загрузку и сохранение данных для сущности. Поэтому я создаю CatDao
, DogDao
, PetHolderDao
и HolderDao
. В каждом @Dao
классе я игнорирую поля, которые зависят от другого объекта: listHoldPets
в Holder
, pet
и holder
в PetHolder
и petHolder
в Pet
.
Сейчас например загрузка всех держателей, содержащих только имя, очень проста с помещением и работает нормально. Также хорошо работает сохранение каждого объекта.
- Но теперь возникает проблема. Я хочу загрузить всех владельцев со списком petHolders. И каждый питомец должен также содержать питомца. Теперь вопрос в том, как сделать это элегантным способом. Решение Android, представленное для отношений, работает только для легких отношений. Так, например, я мог бы создать
HolderWithPetHolder
класс и HolderWithPetHolderDao
для него. С аннотацией @Relation
я могу автоматически загрузить все petHolders
для holder
в объект HolderWithPetHolder
. Но все объекты petHolder
в списке не будут содержать объект Pet
.
Если у вас есть пример кода, ссылка или просто идея по этому поводу, пожалуйста, дайте мне знать. Спасибо!
Ссылки:
Правила для номеров Android
Android Room @ Ссылка