为了获得更好的结构,我想在两个实体中拆分一个更复杂的表,从而产生两个类。通过指定一对一关系,我希望从一个ORM中,两者都在同一个表中提供 - 原因连接在1:1关系中没有意义,只影响性能。
所以我有以下实体:
@Entity()
export class A {
@PrimaryColumn() id: number
// Other Properties
@OneToOne(type => B)
b: B
}
@Entity()
export class B {
@Colum()
someOtherProperty: number
}
但是这不起作用,我得到一个错误,B没有主键。如果我指定一个主键(没有意义),我有两个表A
和B
。 The documentation仅描述与两个表的1:1关系。
为什么他们在这里建立一个不必要的第二张桌子?我使用了其他强大的ORM,如EntityFramework,这是1:1关系的默认行为。只在需要时才生成附加表(1:n,n:n关系)。
答案 0 :(得分:0)
在TypeOrm One-To-One
中,关系仅适用于2个表。在示例中,您需要使用"嵌入式实体"图案。
看起来像是:
@Entity()
export class A {
@PrimaryColumn() id: number
@Colum(type => B)
b: B
}
@Entity()
export class B {
@Colum()
someOtherProperty: number
}