ROOM, SQLite и иерархия классов - PullRequest
0 голосов
/ 07 июня 2018

Итак, это моя проблема.Я уже некоторое время гуглю, и ни один другой вопрос на эту тему, кажется, не подходит к тому, что меня беспокоит.

В моем приложении для Android у меня есть иерархия классов, список туристических достопримечательностей.Каждый объект TouristAttraction имеет, среди прочего, логический атрибут, который указывает, является ли эта привлекательность одной из «любимых» достопримечательностей пользователя.

Однако, когда я вставляю определенный тип туристической достопримечательности, скажем, Памятник, Вставка комнаты помещает как унаследованные, так и определенные атрибуты в одну таблицу, а не в таблицу суперкласса, поэтому, когда я хочу получить список всех«любимые» достопримечательности, я должен объединить результаты запросов на выборку для каждого подкласса.

Кроме того, когда я хочу отметить что-то как любимое, таким образом, я сначала должен увидеть, какой это тип туристической достопримечательности, итогда получите конкретный DAO ... который кажется довольно уродливым.Есть ли способ, когда я вставляю новую строку в таблицу Monument, данные из унаследованных полей вставляются в таблицу суперкласса?

Эта проблема возникает каждый раз, когда мне нужно собрать данные, которые есть у каждого туристического объекта, например местоположениеи т.д.

1 Ответ

0 голосов
/ 08 июня 2018

Я не знаком с андроид-комнатой.Но с точки зрения sqlite я бы структурировал ваши TouristAttactions в отдельную таблицу без каких-либо любимых флагов.И тогда есть второй стол с отображением между любимым пользователем и достопримечательностями.

CREATE TABLE tabTouristAttrations (ID INTEGER AUTOINCREMENT, Name TEXT, ...);
CREATE TABLE mapFavoritesUser (AttrID INTEGER NOT NULL, UserID INTEGER NOT NULL, PRIMARY KEY (AttrID, UserID)

ура Энди

...