使用TypeORM在同一个表中进行一对一关系

时间:2018-02-20 13:57:25

标签: mysql node.js typescript database-relations typeorm

为了获得更好的结构,我想在两个实体中拆分一个更复杂的表,从而产生两个类。通过指定一对一关系,我希望从一个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没有主键。如果我指定一个主键(没有意义),我有两个表ABThe documentation仅描述与两个表的1:1关系。

为什么他们在这里建立一个不必要的第二张桌子?我使用了其他强大的ORM,如EntityFramework,这是1:1关系的默认行为。只在需要时才生成附加表(1:n,n:n关系)。

1 个答案:

答案 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
}

这是文档和示例:http://typeorm.io/#/embedded-entities