Я хочу создать базу данных для хранения того, что пользователь искал, у меня уже есть это:
@Entity(tableName = "user_searched")
data class UserSearched (
@PrimaryKey
@NonNull
@ColumnInfo(name = "item")
val item: String
)
И затем я хочу связать с ним ответ, это может быть отдельный элемент илиlist of:
@Entity(tableName = "my_item")
data class MyItem(
@PrimaryKey
@NonNull
@ColumnInfo(name = "id")
val id: Int,
@ColumnInfo(name = "name") val name: String,
@ColumnInfo(name = "description") val description: String
)
Но тогда я не знаю, как создать отношение, я имею в виду, что я хочу сделать запрос, например, если элемент «android» уже искал раньше, просто верните списокMyItem в качестве ответа.
Как этого добиться с Room db?Я использую rxJava.
ВАЖНОЕ ПРИМЕЧАНИЕ
Существует возможность, когда пользователь ищет "Android", в этом случае он содержит список устройств List<MyItem>
хорошо, дело в том, что пользователь ищет«Google» может также отображать элементы, отображаемые с «Android», поэтому я не знаю, хорошая ли идея создать, например, ForeignKey
для MyItem
, потому что он может содержать более одного ...
EDIT
Просто создал таблицу Join, чтобы связать их следующим образом:
@Entity(
tableName = "name_item_join", primaryKeys = ["name", "item_id"], foreignKeys = [
ForeignKey(
entity = MySearch::class,
parentColumns = ["name"],
childColumns = ["join_name_id"]
),
ForeignKey(
entity = MyItem::class,
parentColumns = ["item_id"],
childColumns = ["join_item_id"]
)
]
)
data class NameItemJoin(
@ColumnInfo(name = "join_name_id")
val nameId: Int,
@ColumnInfo(name = "join_item_id")
val itemId: Int
)
Итак, теперь мой вопрос: всякий раз, когда я добавляю запись в UserSearched
, а затем внутри MyItem
я должен вручную добавить их в NameItemJoin
?Также мне нужно создать @Dao
, чтобы получить все элементы, заданные по имени, верно?
Поток: Первая вставка в UserSearched
Вторая вставка в MyItem
Затем я хотел бы заполнитьNameItemJoin
, поэтому, когда я ищу item_id
, я получаю Список или что-то еще.