Custom Entity Fields
Extend entities with custom fields without modifying core code.
Overview
Custom entity fields allow tenants to add additional metadata fields to standard entities (Employee, Organization, etc.) without modifying the database schema directly.
How It Works
- Custom field definitions are stored as configuration
- Field values are stored in a JSON column or related table
- Custom fields are returned alongside standard entity data
Supported Field Types
| Type | Description |
|---|---|
| Text | Single-line text input |
| TextArea | Multi-line text |
| Number | Numeric value |
| Boolean | True/false toggle |
| Date | Date picker |
| Select | Dropdown selection |
Implementation
Custom fields use the CustomEntityFields decorator system:
@MultiORMEntity("employee")
export class Employee extends TenantOrganizationBaseEntity {
// Standard fields...
@MultiORMColumn({ type: "json", nullable: true })
customFields?: Record<string, any>;
}
Multi-ORM Considerations
When using custom entity fields with MikroORM, ensure the MultiORM decorators are correctly applied. MikroORM 6.x has stricter metadata validation — see the Known Issues section.
Known Issue
MikroORM 6.x may throw errors with custom entity decorators on TypeORM-only entities. The fix involves conditional decorator application based on DB_ORM:
// Conditionally apply based on active ORM
if (process.env.DB_ORM === "mikro-orm") {
// Apply MikroORM decorator
} else {
// Apply TypeORM decorator
}
Related Pages
- Multi-ORM Deep Dive — ORM patterns
- Entity Reference — all entities