GreenDao Отношение ко многим ко многим

Я использую Greendao для сопоставления моей базы данных в Android. Пока все отлично работает.

Но теперь у меня есть следующая проблема:

У меня есть кластер и лист объектов. Кластер содержит много листовых объектов. Если кластер увеличен, он может разделиться на несколько кластеров и больше листьев. Это не строгое древовидное отношение, скорее, у большого кластера есть много листьев, но у небольшого кластера может быть подмножество этих листьев.

В основном кластер имеет много листьев, но листья также находятся в нескольких кластерах, так как идентификатор листа уникален, и отношение к кластеру сохраняется в листе, лист может быть только в одном кластере, верно?

На домашней странице greendao говорится, что возможны многие ко многим отношениям, но как я не могу понять, как моделировать эти отношения.

Можно ли смоделировать такое отношение или структура данных является проблемой для GreenDao?

1 ответ

Решение

Давайте начнем с цитаты из документов:

Пока greenDAO не поддерживает отношения n:m напрямую, вы можете смоделировать таблицу соединений как отдельную сущность. На практике у вас часто есть "сущности отношений" с дополнительными свойствами, поэтому вы можете захотеть это сделать в любом случае. В будущих выпусках greenDAO может ввести прямую поддержку отношений n:m.

Итак, в вашем случае вы должны смоделировать сущность, которая находится между Cluster и Leaf. Давайте назовем эту сущность ClusterLeaf. Чтобы эффективно запрашивать листья для кластера, я бы предложил необработанные запросы, потому что QueryBuilder еще не поддерживает объединения.

Другие вопросы по тегам