为什么TypeORM需要提供OneToMany的反面,但不需要提供ManyToOne的反面?

And*_*ith 5 orm node.js typescript typeorm

以下引用摘自TypeORM 文档

如果没有@ManyToOne,@OneToMany 就无法存在。如果要使用@OneToMany,则需要@ManyToOne。但是,相反的情况不是必需的:如果您只关心 @ManyToOne 关系,则可以定义它而无需在相关实体上使用 @OneToMany。在您设置 @ManyToOne 的位置 - 其相关实体将具有“关系 id”和外键。

为什么需要提供 OneToMany 的反面而不是 ManyToOne?

zen*_*eni 5

这是因为ManyToOne将外键放在当前实体表中,这是SQL表定义生成所必需的。毕竟它只是一个 SQL 列,它最终是一个外键,而 TypeOrm 需要一个实体定义来允许它正确生成 SQL 语句。

TypeOrm 需要知道外键在哪里来生成列表的 fetch SQL 查询,因此需要 ManyToOne 映射。如果 OneToMany 未定义,则不会获取任何内容,因此它也可以工作。