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

Room数据库嵌套实体构建报错:无法找到detailsTId列求助

问题分析与解决方案

报错Cannot find the child entity column 'detailsTId' in PartEntity的核心原因是:DetailsEntity中的@Relation注解未指定正确的关联实体类。

Room处理嵌套查询时,默认会把@Relation标注的集合泛型类(这里是PartEntity)当作关联实体,但PartEntity只是用于封装嵌套数据的POJO(无@Entity注解),真正对应数据库表的实体是PartCargo,detailsTId字段存在于PartCargo中而非PartEntity,因此Room找不到对应字段。

修复步骤

修改DetailsEntity中的@Relation注解,明确指定关联的实体类为PartCargo:

data class DetailsEntity(
    @Embedded
    val details: DetailsCargo,

    @Relation(
        parentColumn = "tId",
        entityColumn = "detailsTId",
        entity = PartCargo::class // 关键:指定关联的数据库实体类
    )
    val parts: List<PartEntity>?
) : Serializable

补充说明

  • PartEntity是Room用于嵌套查询的数据封装类,并非数据库表对应的实体(无@Entity注解),必须通过entity参数告知Room要关联的真实实体类PartCargo。
  • 其余实体与DAO的写法基本正确,DAO中的事务插入逻辑可正常运行。另外getDetails方法的查询语句可调整为SELECT * FROM details WHERE id = :targetId(避免参数名与列名同名引发的潜在歧义),但这并非本次报错的原因。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 09:07:34