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