TypeORM + Postgres配置一对一关系后关联列值为null问题求解
问题原因及解决方法
你需要补全两处配置/操作:
- 第一,给一对一关联加级联保存配置,TypeORM默认不会自动保存关联的实体,需要显式开启级联操作:
修改ItemEntity的@OneToOne注解配置:
@Entity('item') export class ItemEntity { @PrimaryColumn('integer') id: number; // 新增cascade配置,true表示所有操作都级联,也可以按需指定为['insert', 'update'] @OneToOne(() => ItemNameEntity, { cascade: true }) @JoinColumn() name: ItemNameEntity; // ... other props }
- 第二,插入数据必须调用对应Repository的
save()方法,不能使用insert()、createQueryBuilder.insert()等底层插入接口:save()是TypeORM提供的高级操作方法,会自动处理关联实体的级联保存、关联ID回填逻辑,而底层插入接口只会操作单表,不会处理关联逻辑。正确示例:
// 假设你已经注入了ItemRepository await itemRepository.save({ id: 26, name: { en: 'English name', fr: 'French name' }, })
完成以上两处调整后,插入时会自动先写入item_name表的记录,再把生成的id回填到item表的nameId字段。
内容的提问来源于stack exchange,提问作者Tim VN
相关产品推荐
相关产品推荐

