Отношение ко многим ко многим в комнате - PullRequest
0 голосов
/ 10 сентября 2018

У меня было отношение 1: N в комнате, которое выглядит следующим образом (типичный владелец: Список отношений):

class NewsFeedAndPersonItem {
    @Embedded
    lateinit var newsFeedItem: NewsFeedItem
    @Relation(
        parentColumn = "userId", entityColumn = "id"
    )
    var listOfPersons: List<Person> = listOf()

    fun getPerson() = listOfPersons.firstOrNull()

    fun getAvatar() = getPerson()?.photoSmallLink

    fun isPost() = newsFeedItem.type == 2

    fun NewsFeedAndPerson() {}

    fun NewsFeedAndPerson(newsFeedItem: NewsFeedItem, person: List<Person>) {
        this.newsFeedItem = newsFeedItem
        this.listOfPersons = person
    }
}

NewsfeedItem:

@Entity
@TypeConverters(NewsFeedTypeConverters::class)
class NewsFeedItem(

    // Common
    @PrimaryKey @Json(name = ParserConst.DEFAULT_ID) var id: Int = 0,

    @Json(name = ParserConst.USER_ID) var userId: Int = 0,

    @Json(name = ParserConst.CREATED_AT) var createdAt: String? = null,

    @Json(name = ParserConst.NEWS_FEED_TYPE) var type: Int? = null,

)

лицо:

@Entity
data class Person(

    @PrimaryKey var id: Int = 0,

    var favourite: Boolean = false,

    var online: Boolean = false,

)

Пока все хорошо. Проблема в том, что мне нужно изменить параметр NewsFeed userId: String на список пользовательских идентификаторов (List)

У меня вопрос: все еще можно решить с помощью @Relation или есть какой-нибудь простой альтернативный способ достижения этого?

1 Ответ

0 голосов
/ 17 сентября 2018

Соотношение «многие ко многим» решается путем создания новой таблицы «между» двумя существующими таблицами и создания двух связей 1: N для вновь созданной таблицы.

Пример: Человек может иметь много автомобилей, а Автомобиль может принадлежать многим людям. Чтобы решить эту взаимосвязь «многие ко многим», вы можете создать таблицу «Владелец», содержащую ссылку FK на персональный ПК и ссылку FK на автомобильный ПК.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...