tgoop.com/android_live/474
Last Update:
Room и связь Many to Many
#room
На мой взгляд, одна из самых неудобных вещей, которая есть в Room — это работа со связью Many to Many.
Для тех, кто не использовал эту связь в Room, я расскажу вкратце. Больше деталей можно почитать тут.
Для её создания в Room есть следующий механизм:
🔸создаётся ассоциативная таблица с идентификаторами первой и второй таблицы;
🔸создаётся новый data-класс, где прописывается связь через Junction
, указывая эту таблицу в качестве связи.
По идее, все довольно просто, но главная сложность возникает в фильтрации данных. В документации показан пример с получением полного списка данных, но если её нужно сделать, то единственный вариант — использование @RawQuery
вместо @Query
и генерирования запроса вручную.
Для такой связи нужно будет создать INNER JOIN
по ассоциативной таблице, и дальше применить нужные фильтры.
Главный недостаток тут — отсутствие проверки правильности запроса во время компиляции, поэтому будьте особенно внимательны при его составлении.
BY Android Live 🤖

Share with your friend now:
tgoop.com/android_live/474