TGViewer
Android Live 🤖 Android Live 🤖 @android_live · 5.12K subscribers
Post #474 2.94K
​​Room и связь Many to Many
#room

На мой взгляд, одна из самых неудобных вещей, которая есть в Room — это работа со связью Many to Many.

Для тех, кто не использовал эту связь в Room, я расскажу вкратце. Больше деталей можно почитать тут.
Для её создания в Room есть следующий механизм:
🔸создаётся ассоциативная таблица с идентификаторами первой и второй таблицы;
🔸создаётся новый data-класс, где прописывается связь через Junction, указывая эту таблицу в качестве связи.

По идее, все довольно просто, но главная сложность возникает в фильтрации данных. В документации показан пример с получением полного списка данных, но если её нужно сделать, то единственный вариант — использование @RawQuery вместо @Query и генерирования запроса вручную.
Для такой связи нужно будет создать INNER JOIN по ассоциативной таблице, и дальше применить нужные фильтры.

Главный недостаток тут — отсутствие проверки правильности запроса во время компиляции, поэтому будьте особенно внимательны при его составлении.
More from @android_live
  1. Sep 29, 2026Post #1130
  2. Sep 29, 2026На днях попалась вакансия мечты Вроде всё начинается как неплохо: удалёнка, Kotlin/Jetpack…
  3. Sep 28, 2026На днях ревьювил код, связанный с копированием в буфер обмена И заметил, что многие прилож…
  4. Sep 26, 2026AirDrop на Android, похоже, уже есть на нескольких моделях Android Но, оказывается, всё эт…
  5. Sep 25, 2026Похоже, есть что посмотреть на выходных Недавно вышло интервью с Женей Вороновым Jake Whar…
  6. Sep 15, 2026Google выкатили ARTEMIS Эта инструмент, который превращает обычный текст в реальные действ…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →