Entity Inheritance Hierarchy
Understanding the base class hierarchy for all database entities.
Inheritance Treeβ
BaseEntityβ
The root class for all entities:
export abstract class BaseEntity {
@PrimaryGeneratedColumn("uuid")
id: string;
@CreateDateColumn()
createdAt: Date;
@UpdateDateColumn()
updatedAt: Date;
@Column({ nullable: true })
isActive?: boolean;
@Column({ nullable: true })
isArchived?: boolean;
@DeleteDateColumn()
deletedAt?: Date;
@Column({ nullable: true })
archivedAt?: Date;
}
TenantBaseEntityβ
Adds tenant scoping:
export abstract class TenantBaseEntity extends BaseEntity {
@Column({ nullable: true })
tenantId: string;
@ManyToOne(() => Tenant)
tenant?: Tenant;
}
Usage: Entities scoped to a tenant but not organization-specific (e.g., Role, User settings).
TenantOrganizationBaseEntityβ
Adds organization scoping:
export abstract class TenantOrganizationBaseEntity extends TenantBaseEntity {
@Column({ nullable: true })
organizationId: string;
@ManyToOne(() => Organization)
organization?: Organization;
}
Usage: Most business entities (Task, Employee, Invoice, etc.).
TranslationBaseβ
For multi-language content:
export abstract class TranslationBase extends BaseEntity {
@Column()
languageCode: string;
}
Usage: ProductTranslation, ProductCategoryTranslation, etc.
Which Base Class to Useβ
| Scenario | Base Class |
|---|---|
| System-level entity | BaseEntity |
| Tenant-scoped | TenantBaseEntity |
| Organization-scoped (most) | TenantOrganizationBaseEntity |
| Translatable content | TranslationBase |
Related Pagesβ
- Core Entities β User, Tenant, Org
- Multi-ORM Deep Dive β ORM decorators
- Plugin Development Guide β using base classes