Как создать рекурсивное отношение в комнате? - PullRequest
1 голос
/ 18 марта 2020

У меня есть список сообщений. Каждое сообщение может иметь свои собственные сообщения.

@Entity(tableName = "message_item")
data class MessageEntity(
    @PrimaryKey() @ColumnInfo(name = "local_id") val localId: String,
    @ColumnInfo(name = "content") val content: String?,
    @ColumnInfo(name = "reply_id") val replyId: String?
)

Если я создаю рекурсивный объект, чем получаю StackOverflow исключение

data class MessageWithReplyRecurciveEntity(
    @Embedded val message: MessageEntity,
    @Relation(
        parentColumn = "reply_id",
        entityColumn = "message_id",
        entity = MessageEntity::class)
    val replyMessage: MessageWithReplyRecurciveEntity?,

    @Relation(
        parentColumn = "user_id",
        entityColumn = "user_id",
        entity = MessageEntity::class)
    val user: ChatUserEntity
)

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

data class MessageWithReplyRecurciveEntity(
    @Embedded val message: MessageEntity,
    @Relation(
        parentColumn = "reply_id",
        entityColumn = "message_id",
        entity = MessageEntity::class)
    val replyMessage: MessageWithReplyEntity?,

    @Relation(
        parentColumn = "user_id",
        entityColumn = "user_id",
        entity = MessageEntity::class)
    val user: ChatUserEntity
)
data class MessageWithReplyEntity(
    @Embedded val message: MessageEntity,
    @Relation(
        parentColumn = "reply_id",
        entityColumn = "message_id",
        entity = MessageEntity::class)
    val replyMessage: MessageEntity?
)

Как правильно обращаться с таким делом?

...