如何使 OneToOne 关系对于多个继承 类 是可选的?
How to make OneToOne relationship optional for multiple inherited classes?
假设我有一个 class Animal
被 Dog
和 Cat
继承。
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。
假设我有一个 class Animal
被 Dog
和 Cat
继承。
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。