我有以下 TypeORM 实体
@Entity()
export class SuperResource extends BaseEntity {
@PrimaryGeneratedColumn()
id: number;
@OneToOne(() => Resource, {cascade: true, eager: true})
@JoinColumn()
resource: Resource
@Column({type: "enum", enum: ResourceTypes})
type: string
@Column()
created_at: Date
@Column()
modified_at: Date
}
我还有几个实体
extends
Resource
实体,例如:
ETL
@Entity()
export class Job extends Resource {
@PrimaryGeneratedColumn()
id: number;
@Column()
jobId: number;
@Column()
description: string;
}
桌子
@Entity()
export class Table extends Resource {
@PrimaryGeneratedColumn()
id: number;
@Column()
description: string;
@Column()
database: string
@Column({ type: 'enum', enum: Datasources, default: Datasources.Other})
datasource: Datasources;
}
是
Resource
以下实体
@Entity()
export abstract class Resource extends BaseEntity {
@PrimaryGeneratedColumn()
id: number;
@Column()
name: string
@Column()
regulatory: boolean
}
现在,当我执行查询时,例如,
repository.findOne({ where: {id: parseInt(id)}})
字段
resource
返回的对象属于 Resource
类型,这意味着我没有获得对象内部的完整信息。
¿有没有办法根据对象的Type返回
resource
字段内的信息?
可以通过执行2次查询来解决,但我不确定是否还有其他方法。
谢谢!
TypeOrm 文档包含实体继承的示例。您可以使用 @TableInheritance 和 @ChildEntity 装饰器来解决您的问题。
是否对您有帮助请反馈,谢谢!