How ro make recursive relation in room?

Viewed 61

I have list of messages. Each message can have its own messages.

@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?
)

If i create recursiv eobject, than i receive StackOverflow exception

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
)

If i create intermideat object, than i am missing user relation

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?
)

How to properly handle such case?

0 Answers
Related