環境
実装例
コード内のコメント部分が、STIに必要な実装です。
// 子テーブルの enum を定義する。
export enum ContentType {
PHOTO = 'PHOTO',
QUESTION = 'QUESTION',
}
@Entity()
// @TableInheritance を指定する。
// enum を指定する。
@TableInheritance({ column: { type: 'enum', enum: ContentType, name: 'type' } })
export class Content {
@PrimaryGeneratedColumn()
id: number;
// type カラムを enum で明示的に定義する
@Column({
type: 'enum',
enum: ContentType,
})
type: ContentType;
@Column()
title: string;
}
// @ChildEntity を指定する。
// 引数は、enum を使って明示的に指定する。
@ChildEntity(ContentType.PHOTO)
export class Photo extends Content {
@Column()
size: string;
}
// 同上
@ChildEntity(ContentType.QUESTION)
export class Question extends Content {
@Column()
answersCount: number;
}