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

Room数据库插入异常:关联表未正确填充问题求助

Room数据库关联表填充异常及Poster表数据缺失问题

问题现象

  • 将API返回的对象保存到Room数据库时,所有传入参数均非空,插入调用无异常抛出,但数据库查询后发现两个问题:
    1. Job与Worker的关联表未正确填充(无对应关联数据)
    2. Poster表中缺失id为8和9的两条数据
  • 此前使用本地构造的无空值测试数据时,代码运行完全正常,所有表(包括关联表)均能正确插入数据

提供的相关内容

1. API返回的JSON数据

// 实际API返回的完整JSON数据
{
  // 此处为用户提供的JSON内容
}

2. 数据插入核心代码

// 示例代码,实际插入逻辑如下
suspend fun batchInsert(apiResponse: ApiResponse) {
    db.withTransaction {
        jobDao.insertAll(apiResponse.jobs)
        workerDao.insertAll(apiResponse.workers)
        posterDao.insertAll(apiResponse.posters)
        jobWorkerRelationDao.insertAll(apiResponse.jobWorkerRelations)
    }
}

3. Room生成的插入语句

-- Job-Worker关联表插入语句
INSERT OR ABORT INTO `job_worker_relation` (`job_id`, `worker_id`) VALUES (?, ?);
-- Poster表插入语句
INSERT OR ABORT INTO `poster` (`id`, `url`, `description`) VALUES (?, ?, ?);

4. 实体类定义

Job实体

@Entity(tableName = "job")
data class Job(
    @PrimaryKey val id: Int,
    @ColumnInfo(name = "job_title") val title: String,
    val createTime: Long
)

Worker实体

@Entity(tableName = "worker")
data class Worker(
    @PrimaryKey val id: Int,
    @ColumnInfo(name = "worker_name") val name: String,
    val skill: String
)

Job-Worker关联实体

@Entity(
    tableName = "job_worker_relation",
    primaryKeys = ["job_id", "worker_id"],
    foreignKeys = [
        ForeignKey(entity = Job::class, parentColumns = ["id"], childColumns = ["job_id"]),
        ForeignKey(entity = Worker::class, parentColumns = ["id"], childColumns = ["worker_id"])
    ]
)
data class JobWorkerRelation(
    @ColumnInfo(name = "job_id") val jobId: Int,
    @ColumnInfo(name = "worker_id") val workerId: Int
)

Poster实体

@Entity(tableName = "poster")
data class Poster(
    @PrimaryKey val id: Int,
    @ColumnInfo(name = "poster_url") val url: String,
    val content: String?
)

5. 数据库表截图

Job-Worker关联表查询结果
Poster表查询结果

需要解决的问题

  1. 为什么Job-Worker关联表未正确插入数据?
  2. 为什么Poster表中id为8和9的数据缺失?
  3. API返回数据与本地测试数据的差异是否是导致问题的核心原因?

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 12:07:21