You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Room多层级嵌套查询问题:Poster关联Worker无法嵌入Job

Room嵌套关联查询实现问题

我有如下数据结构:Job包含Workers列表与Posters列表,每个Poster对应单个Worker。目前我能将Workers列表和Posters列表嵌入至Job对象中,但无法将单个Worker嵌入到Poster对象内。

我尝试使用Room的@Relation与@Entity注解实现,但遇到问题:Entity不能包含Relation,而要使用Relation必须关联Entity。这导致我用PosterWithWorker类给Poster添加Worker关联时,JobWithPostersAndWorkers会报错,因为PosterWithWorker不是Entity,且无法将其设为Entity。

我尝试通过外键将worker表映射至poster表,以下是相关类代码:

@Entity(tableName = "poster")
data class Poster (
    @PrimaryKey val poster_id: Int,
    val job_id: Int,
    val qr_code: String,
    var status: Int,
    @ColumnInfo(name = "worker_id", index = true)
    val worker_id: Int,
    val longitude: Double,
    val latitude: Double
)
@Entity(tableName = "worker",
        foreignKeys = [
        androidx.room.ForeignKey(
            entity = Poster::class,
            parentColumns = ["poster_id"],
            childColumns = ["worker_id"],
            onDelete = CASCADE,
            onUpdate = CASCADE
        )])
data class Worker(
    @PrimaryKey
    @ColumnInfo(name = "worker_id")
    val worker_id: Int,
    val workerName: String
)
data class PosterWithWorker(
        @Embedded val poster: Poster,
        @Relation(
            parentColumn = "poster_id",
            entityColumn = "worker_id"
        )
        val worker: Worker
)
data class JobWithPostersAndWorkers(
    @Embedded val job: Job,
    @Relation(
        parentColumn = "job_id",
        entityColumn = "worker_id",
        associateBy = Junction(JobWorkerCrossRef::class)
    )
    val workers: List<Worker>,

    @Relation(entity=Poster::class, parentColumn = "job_id", entityColumn = "job_id")
    val poster: List<PosterWithWorker>
)
data class PosterWithWorker(
        @Embedded val poster: Poster,
        @Relation(
            parentColumn = "poster_id",
            entityColumn = "worker_id"
        )
        val worker: Worker
)

我参考了Android Room多对多关联的嵌套模式示例,但多种变体均出现错误。

我的问题:

  • 是否可以不使用外键实现该需求?
  • 我当前的实现哪里出错了?

内容的提问来源于stack exchange,提问作者user1743524

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 06:30:39