TypeORM多对多嵌套关联查询报错:无法读取joinColumns属性
解决TypeORM中OneToMany关联查询的joinColumns未定义错误
问题原因
你遇到的Cannot read properties of undefined (reading 'joinColumns')错误,核心原因是OneToMany关联的反向引用字段写错了。TypeORM要求OneToMany的第二个参数必须指向关联实体中对应的ManyToOne属性,而非实体的主键id。你的代码里,Product和Part的OneToMany都错误指向了Item的id字段,导致TypeORM无法识别正确关联关系,进而抛出该错误。
修复步骤
1. 修改Product实体的OneToMany关联
将@OneToMany(() => Item, item => item.id)改为指向Item中关联Product的属性:
// products/product.entity.ts @OneToMany(() => Item, item => item.product) // 替换item.id为item.product items: Item[];
2. 修改Part实体的OneToMany关联
同样,将@OneToMany(() => Item, item => item.id)改为指向Item中关联Part的属性:
// parts/part.entity.ts @OneToMany(() => Item, item => item.part) // 替换item.id为item.part items: Item[];
3. 验证关联逻辑
修改后,实体间的关联关系恢复正确:
- Product通过
items关联多个Item,Item通过product反向关联单个Product - Part通过
items关联多个Item,Item通过part反向关联单个Part
此时调用服务层的findAll方法查询Product并关联items,TypeORM就能正确识别关联关系,不会再抛出joinColumns未定义的错误。
内容的提问来源于stack exchange,提问作者agusgambina
相关产品推荐
相关产品推荐

