What mikro-orm/mikro-orm shipped
Written by FoxPlug from the repository's own releases; not affiliated with Mikro-orm. Paste your own repository in the box below and FoxPlug writes the same weekly update for your product. This page is an automatic summary of the releases, pull requests and commits in github.com/mikro-orm/mikro-orm; Mikro-orm did not write it and does not use or endorse FoxPlug. Every line links to the change it describes.
Get a weekly update like this for your product, free
Week of October 5, 2026
What shipped
- Release 7.2.5 fixes custom types and serializedName properties in em.refresh, hydration of STI object embeddables declared with different classes via the root, and null custom type values in upsert results. Release
- Metadata discovery no longer crashes when polymorphic embeddable variants, including STI siblings, declare a same-named property as a scalar in one variant and a relation in another, or as relations to different entities. Pull request #8440
- Joins into a non-abstract STI entity now match its subclasses instead of adding an empty discriminator, so nested filters and joined populates return rows. Pull request #8425
- Joined queries now prefer a property's formula over a custom type's convertToJSValueSQL, so properties that use both no longer fail with a missing column alias. Pull request #8415
- Flush ordering now accounts for to-one relations targeting TPT subclasses, inserting the subclass row before owners that reference it. Pull request #8422
- Formula properties declared on TPT child entities are selected in polymorphic loads instead of coming back undefined. Pull request #8419
- Em.refresh now handles custom types and serializedName properties, keeping bigint values as bigints and refreshing mapped keys correctly. Pull request #8413
- UpsertMany groups reloaded rows by condition values instead of scanning per entity when reloading is needed to fill in primary keys. Pull request #8393
- MongoDB upsert without a unique value no longer runs an empty filter that overwrites every document in the collection. Pull request #8398
- Projects living in directories with glob characters no longer fail to resolve migrations, seeders and entities given as absolute paths. Pull request #8390
Why it matters
This week's changes fix crashes and wrong results in polymorphic embeddables, STI joins, TPT flush ordering, formulas in joined queries, refresh with custom types, and upsert handling of nulls and unique keys. They also improve performance for upsertMany reloads and MongoDB M:N population, and make projects in glob-containing paths work.
Changelog entry
- Release 7.2.5 with fixes for custom types and serializedName in em.refresh, STI object embeddable hydration, and null custom type values in upsert results. Release
- Fix metadata discovery crash for same-named properties of different kinds in polymorphic embeddables and STI siblings. Pull request #8440
- Match STI subclasses when joining into a non-abstract STI entity. Pull request #8425
- Prioritize formula over convertToJSValueSQL in joined queries. Pull request #8415
- Order flush around relations to TPT subclasses. Pull request #8422
- Select formulas of TPT descendants in polymorphic loads. Pull request #8419
- Fix custom types and serializedName properties in em.refresh. Pull request #8413
- Keep null custom type values in upsert results. Pull request #8429
- Match reloaded rows in upsertMany when inputs use different unique keys. Pull request #8396
- Insert on MongoDB upsert without a unique value instead of overwriting the collection. Pull request #8398
- Group reloaded rows by condition values in upsertMany. Pull request #8393
- Support glob characters in the project path. Pull request #8390
7.2.5 is out: fixes for em.refresh with custom types, STI embeddable hydration, null values in upsert results, plus STI join matching, TPT flush ordering, formula selection in joined queries, and glob paths in project directories.
Release 7.2.5 is available with fixes for custom types and serializedName in em.refresh, STI object embeddable hydration, and null custom type values in upsert results. Alongside the release, this week brings fixes for metadata discovery with same-named properties across polymorphic embeddable variants, joins into non-abstract STI entities, formulas in joined queries, TPT flush ordering and descendant formulas, MongoDB upserts without a unique value, schema down migrations for routines and triggers, and project paths containing glob characters. Performance work also reduces reload cost in upsertMany and groups MongoDB M:N population in fewer passes.
Week of September 28, 2026
What shipped
- Version 7.2.3 released with fixes for decimal string precision detection, TPT identity reseeding on MSSQL, and Oracle primary key introspection. Release
- Version 6.6.17 released with fixes for enum array properties, populated relation caching, and migration snapshots. Release
- Autoincrement columns now support sequence start and increment options via sequence: { startWith, incrementBy }. Pull request #8353
- Oracle driver now supports database triggers with proper DDL generation and introspection. Pull request #8376
- Batch updates of versioned entities now check row versions to prevent race conditions from concurrent writes. Pull request #8381
- SQLite now properly rebuilds tables when primary keys are added or changed. Pull request #8356
- SQLite schema creation and updates now respect the createForeignKeyConstraints: false option. Pull request #8383
- PostgreSQL identity columns with custom start and increment values are now preserved during schema updates. Pull request #8351
- Oracle now returns non-PK autoincrement and generated column values after inserts. Pull request #8359
- PostgreSQL check constraint diffs now correctly handle double precision casts and between expressions. Pull request #8366
Why it matters
Two stable releases fix critical issues with decimal precision, versioned entity updates, and schema management across multiple databases. New sequence options for autoincrement columns and Oracle trigger support expand schema customization capabilities for users managing complex database structures.
Changelog entry
- Core: detect changes to decimal strings beyond double precision Release
- Mssql: skip TPT child tables when reseeding identities in clear() Release
- Oracle: introspect primary keys so the schema diff can restore and change them Release
- Core: accept plain arrays for enum array properties in EntityData Release
- Core: keep populated relations clean after a result cache hit Release
- Core: add sequence start/increment options for autoincrement columns Pull request #8353
- Oracle: support database triggers Pull request #8376
- Core: check the version in batch updates Pull request #8381
- Sqlite: rebuild the table when the primary key is added or changed Pull request #8356
- Sqlite: respect createForeignKeyConstraints: false in schema create and update Pull request #8383
- Postgres: respect identity options when diffing and rendering columns Pull request #8351
- Oracle: return non-PK autoincrement and generated columns after inserts Pull request #8359
7.2.3 and 6.6.17 released. Fixes for decimal precision, versioned batch updates, TPT identity reseeding, and Oracle triggers. Autoincrement columns now support sequence start/increment options.
Mikro-orm 7.2.3 and 6.6.17 are out. These releases address critical schema and data handling issues: decimal string precision detection beyond double precision, versioned entity batch updates with race condition prevention, TPT identity reseeding on MSSQL, and Oracle trigger support. New feature: autoincrement columns can now specify sequence start and increment values. Schema diffs improved for PostgreSQL identity options, SQLite primary key changes, and SQLite foreign key constraints.
Week of September 21, 2026
What shipped
- Filter by properties of any polymorphic relation target, resolving conditions against all targets that define the queried properties instead of just the first. Pull request #8327
- Order by properties of any polymorphic relation target, with each ordered property resolved against the targets that define it. Pull request #8333
- Cache Kysely result maps and table name lookups to avoid rebuilding field and relation maps on every query result with certain naming strategies. Pull request #8337
- Add per-entity forceUndefined option via @Entity(), EntitySchema, and defineEntity() to override the global ORM setting. Pull request #8325
- Apply target filters when populating polymorphic relations with joined or balanced strategy, respecting soft-delete and other filters. Pull request #8330
- Fix STI bugs where subtypes mapping the same property to different columns would hydrate as null when loading through the root. Pull request #8340
- Throw an error in MongoDB when relation conditions that require a join are used, since MongoDB has no joins. Pull request #8332
- Respect distinct() and distinctOn() in qb.getCount() to return correct counts for deduplicated queries. Pull request #8312
- Respect property returning hints on updates and upserts to keep managed entities in sync with database values. Pull request #8299
- Restrict TPT identity inserts to the owning table for table-per-type upserts with supplied primary keys in SQL Server. Pull request #8291
Why it matters
This week focused on polymorphic relations, with new filtering and ordering capabilities across all targets. Several fixes address data consistency during upserts, especially with heterogeneous batches and transaction handling. Improved cache performance and error handling round out the release.
Changelog entry
- Feat(core): filter by properties of any polymorphic relation target Pull request #8327
- Feat(core): order by properties of any polymorphic relation target Pull request #8333
- Perf(sql): cache kysely result maps and table name lookups Pull request #8337
- Feat(core): add per-entity forceUndefined option Pull request #8325
- Fix(sql): apply target filters when populating polymorphic relations Pull request #8330
- Fix(sql): handle STI subtypes with conflicting property columns and types Pull request #8340
- Fix(mongodb): throw on relation conditions that need a join Pull request #8332
- Fix(sql): do not convert custom types twice in em.countBy() Pull request #8342
- Fix(sql): respect distinct() and distinctOn() in qb.getCount() Pull request #8312
- Fix(sql): keep rows when ordering by polymorphic relation targets Pull request #8334
- Fix(sql): respect property returning hints on updates and upserts Pull request #8299
- Fix(mssql): restrict TPT identity inserts to the owning table Pull request #8291
- Fix(core): allow falsy values in concurrency checks Pull request #8318
- Fix(core): preserve concurrency values in batch lock checks Pull request #8317
- Fix(core): keep entity identity for relations using targetKey Pull request #8323
This week: filter and order by properties of any polymorphic relation target, cache Kysely result maps, add per-entity forceUndefined, fix STI and upsert consistency issues, respect returning hints on updates.
Mikro-orm 6.4 week: polymorphic relations now let you filter and order by properties across all target types, not just the first. Improved Kysely performance with result map caching. Added per-entity forceUndefined options. Fixed data consistency for STI subtypes and heterogeneous upserts. Better handling of returning hints on updates and upserts.
Week of September 14, 2026
What shipped
- Released v7.2.1 with fixes for property name escaping in generated code, populated relations after cache hits, and legacy MSSQL column type mapping. Release
- Fixed remaining positions where property names were not properly escaped in compiled hydrators and comparators, following up on a previous incomplete fix. Pull request #8289
- Added support for legacy MSSQL ntext and image column types, which previously fell back to unknown type instead of mapping to string. Pull request #8288
- Fixed properties marked with returning: true on INSERT statements to properly sync managed entities with their persisted database values after flush. Pull request #8277
- Fixed raw query parameters containing special characters like question marks being incorrectly inlined, causing knex parsing errors. Pull request #8281
- Fixed returning clause being incorrectly emitted inside update sub-queries when native updates traverse relations. Pull request #8283
- Fixed filtered many-to-many references being incorrectly modified during persistence operations. Pull request #8273
Why it matters
This release addresses critical bugs in query execution, type mapping, and entity synchronization that could cause data inconsistency or incorrect query results. The fixes ensure properties are properly escaped in generated code, returning clauses work correctly across different query types, and legacy database column types are handled properly.
Changelog entry
- 7.2.1 (2026-09-19): Escape remaining property names in generated code, keep populated relations clean after result cache hits, map legacy ntext and image column types in MSSQL Release
- Core: escape property names in ObjectHydrator createReference options and inline embeddable child names Pull request #8289
- Mssql: map legacy ntext and image column types instead of falling back to UnknownType Pull request #8288
- Sql: respect property returning hints on INSERT statements to maintain entity synchronization Pull request #8277
- Query-builder: do not inline raw query parameters, pass them untouched to knex Pull request #8281
- Sql: do not emit returning clause inside update sub-query when nativeUpdate traverses relations Pull request #8283
- Sql: preserve filtered many-to-many references during persistence Pull request #8273
V7.2.1 is out. Fixes for property escaping in generated code, MSSQL legacy column type mapping, returning clause handling, and many-to-many reference preservation.
V7.2.1 released with several important fixes: property names are now properly escaped in generated hydrators and comparators, MSSQL legacy ntext and image types are correctly mapped, INSERT returning clauses properly sync entities with database values, raw query parameters with special characters no longer cause parsing errors, and filtered many-to-many references are preserved correctly.