使用 TypeORM + Postgres 的一对一关系中列的值为空
Value of column in one to one relation using TypeORM + Postgres is null
我正在尝试在 item
和 item_name
之间建立一个简单的一对一关系。实体如下所示:
@Entity('item')
export class ItemEntity {
@PrimaryColumn('integer')
id: number;
@OneToOne(() => ItemNameEntity)
@JoinColumn()
name: ItemNameEntity;
// ... other props
}
item-name.entity
@Entity('item_name')
export class ItemNameEntity {
@PrimaryGeneratedColumn()
id: number;
@Column()
en: string;
@Column()
fr: string;
// ... other properties
}
我使用以下有效负载插入 item
:
{
id: 26,
name: { en: 'English name', fr: 'French name' },
}
它按预期存储项目,并添加了一个 nameId
列。问题是它没有向 item_name
中插入任何内容,因此 nameId
列是 null
.
我在这里错过了什么?
来自 .
您必须在 ItemEntity
中的 name
关系上设置 cascade: true
:
@Entity('item')
export class ItemEntity {
@PrimaryColumn('integer')
id: number;
@OneToOne(() => ItemNameEntity, { cascade: true })
@JoinColumn()
name: ItemNameEntity;
// ... other props
}
在 ItemEntity
上设置 cascade: true
告诉 TypeORM 如果一个新的 itemName 是 item 上的“链接” 和 item 已保存,新的 itemName也应该保存到数据库中。
示例:
const manager = getManager();
const item: ItemEntity = manager.create(ItemEntity, {
id: 26,
name: manager.create(ItemNameEntity, {
en: 'English name',
fr: 'French name'
}),
});
await manager.save(ItemEntity, item);
我正在尝试在 item
和 item_name
之间建立一个简单的一对一关系。实体如下所示:
@Entity('item')
export class ItemEntity {
@PrimaryColumn('integer')
id: number;
@OneToOne(() => ItemNameEntity)
@JoinColumn()
name: ItemNameEntity;
// ... other props
}
item-name.entity
@Entity('item_name')
export class ItemNameEntity {
@PrimaryGeneratedColumn()
id: number;
@Column()
en: string;
@Column()
fr: string;
// ... other properties
}
我使用以下有效负载插入 item
:
{
id: 26,
name: { en: 'English name', fr: 'French name' },
}
它按预期存储项目,并添加了一个 nameId
列。问题是它没有向 item_name
中插入任何内容,因此 nameId
列是 null
.
我在这里错过了什么?
来自
您必须在 ItemEntity
中的 name
关系上设置 cascade: true
:
@Entity('item')
export class ItemEntity {
@PrimaryColumn('integer')
id: number;
@OneToOne(() => ItemNameEntity, { cascade: true })
@JoinColumn()
name: ItemNameEntity;
// ... other props
}
在 ItemEntity
上设置 cascade: true
告诉 TypeORM 如果一个新的 itemName 是 item 上的“链接” 和 item 已保存,新的 itemName也应该保存到数据库中。
示例:
const manager = getManager();
const item: ItemEntity = manager.create(ItemEntity, {
id: 26,
name: manager.create(ItemNameEntity, {
en: 'English name',
fr: 'French name'
}),
});
await manager.save(ItemEntity, item);