GreenDao Отношение ко многим ко многим
Я использую Greendao для сопоставления моей базы данных в Android. Пока все отлично работает.
Но теперь у меня есть следующая проблема:
У меня есть кластер и лист объектов. Кластер содержит много листовых объектов. Если кластер увеличен, он может разделиться на несколько кластеров и больше листьев. Это не строгое древовидное отношение, скорее, у большого кластера есть много листьев, но у небольшого кластера может быть подмножество этих листьев.
В основном кластер имеет много листьев, но листья также находятся в нескольких кластерах, так как идентификатор листа уникален, и отношение к кластеру сохраняется в листе, лист может быть только в одном кластере, верно?
На домашней странице greendao говорится, что возможны многие ко многим отношениям, но как я не могу понять, как моделировать эти отношения.
Можно ли смоделировать такое отношение или структура данных является проблемой для GreenDao?
1 ответ
Давайте начнем с цитаты из документов:
Пока greenDAO не поддерживает отношения n:m напрямую, вы можете смоделировать таблицу соединений как отдельную сущность. На практике у вас часто есть "сущности отношений" с дополнительными свойствами, поэтому вы можете захотеть это сделать в любом случае. В будущих выпусках greenDAO может ввести прямую поддержку отношений n:m.
Итак, в вашем случае вы должны смоделировать сущность, которая находится между Cluster и Leaf. Давайте назовем эту сущность ClusterLeaf. Чтобы эффективно запрашивать листья для кластера, я бы предложил необработанные запросы, потому что QueryBuilder еще не поддерживает объединения.