首页 > 解决方案 > 如何在房间中建立递归关系?

问题描述

我有消息列表。每条消息都可以有自己的消息。

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

如果我创建递归 eobject,那么我会收到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?
)

如何妥善处理此类案件?

标签: androidandroid-room

解决方案


推荐阅读