如何使 OneToOne 关系对于多个继承 类 是可选的?

How to make OneToOne relationship optional for multiple inherited classes?

假设我有一个 class AnimalDogCat 继承。

export class Animal extends BaseEntity{
    @PrimaryGeneratedColumn()
    id:number;
}

@Entity()
export class Cat extends Animal{
   ...
}

@Entity()
export class Dog extends Animal{
   ...
}

现在,我想展示与他们主人的 OneToOne 关系。

@Entity
export class Owner extends BaseEntity{
   ....
 
   @OneToOne()
   pet:???
}

Owner 是一个 class,它有一个属性 pet,可以是猫或狗。 如何使用 typeorm 实现此目的?


还是我做错了?

这是你的做法


@Entity()
@TableInheritance({ column: { type: "varchar", name: "type" } })
export class Content {
    
    @PrimaryGeneratedColumn()
    id: number;
 
    @Column()
    title: string;
    
    @Column()
    description: string;
    
}

@ChildEntity()
export class Photo extends Content {
    
    @Column()
    size: string;
    
}
@ChildEntity()
export class Question extends Content {
    
    @Column()
    answersCount: number;
    
}
@ChildEntity()
export class Post extends Content {
    
    @Column()
    viewCount: number;
    
}

您可以在 typeorm 中将 @ChildEntity() 用于 children,将 @Entity() 用于主要 class。