Skip to main content
Version: 6.2

Changelog

All notable changes to this project will be documented in this file. See Conventional Commits for commit guidelines.

6.2.1 (2024-04-12)

Note: Version bump only for package @mikro-orm/core

6.2.0 (2024-04-09)

Bug Fixes

  • core: fix support for custom repositories in @CreateRequestContext on type level (aacac83)
  • core: ignore current context when creating repository instance (4c12fc5), closes #5395
  • core: prefer entity type inference from the first parameter of entity manager methods (523963b)
  • core: respect custom EntityManager type in em.fork() (bb1a3f9), closes #5415
  • core: support passing Configuration instance to MikroORM.init (54a37d0), closes #5413
  • entity-generator: allow arbitrary class and prop names as identifiers (#5359) (b0c0236)

Features

  • core: add support for serialization groups (#5416) (818c290)
  • core: allow better type-safety for custom types via IType (#5383) (0e18346)
  • core: allow configuring driverOptions on replica level (05e81f8)
  • core: include all dirty collections to UoW.getCollectionUpdates() (e7bd66f)
  • core: make assign options configurable globally (bc9f6f5), closes #5410
  • libsql: add libSQL driver (#5417) (6c63e4b), closes #5283
  • mssql: add MS SQL Server driver (#1375) (eeaad45), closes #771
  • postgres: allow defining deferred FK constraints (#5384) (f42d171), closes #5306
  • schema: allow configuring updateRule and deleteRule for pivot tables (cc69c3c)
  • schema: improve orm.schema.execute() to support executing batches (3c5a347)
  • schema: support recreating the whole database via orm.schema.refreshDatabase() (2e4ab49)

Performance Improvements

  • core: optimize metadata discovery (c322f9b)

6.1.12 (2024-03-24)

Bug Fixes

  • core: fix assignability of partially loaded entities (9de4965), closes #5374
  • reflection: fallback to not proving path to tsconfig if not found (a24d80d)

Features

  • core: allow passing EntityManager or EntityRepository to @CreateRequestContext decorator (184cdd4)
  • postgres: add ?, ?| and ?& json operators (#5366) (6418872), closes #4678

6.1.11 (2024-03-18)

Bug Fixes

  • core: improve serialization of lazily partially loaded entities (1c7b446), closes #5139
  • core: support unsetting composite FKs via flush (64f2afd)
  • migrator: type mismatch between Migration interface and class (#5343) (2fba5ee), closes #5340

6.1.10 (2024-03-14)

Bug Fixes

  • core: detect ts-node when using esm loader (#5332) (23cc880)
  • core: don't alias formulas in update/delete queries (9e35642), closes #5334
  • core: fix value of hasPrev[/Next]Page when paginating backwards (#5320) (00239eb)

Features

  • core: add onlyOwnProperties option to assign helper (#5330) (a081bea), closes #5327

Performance Improvements

  • core: disable change tracking on scalars when flushMode: auto (fc30bfe)

6.1.9 (2024-03-10)

Bug Fixes

  • core: don't propagate changes from em.transactional() to upper context if its global (7ac9a19), closes #5309
  • core: ignore filters on relations inside embedded properties (1e4b2ce), closes #5310
  • core: improve checks for generated columns (0396e1e)
  • core: map virtual relations with persist: false as formulas to preserve aliasing (20a4cfb)

Features

  • postgres: add support for native enum arrays (c2e362b), closes #5322

6.1.8 (2024-03-06)

Bug Fixes

  • core: allow setting values to null on unloaded references (1cbead6), closes #5274
  • core: skip STI discriminator condition when bulk-deleting entities (fa712ca), closes #5303

6.1.7 (2024-03-04)

Bug Fixes

  • core: add em.addFilter() fallback signature that allows more than 3 types (b6efd44)

6.1.6 (2024-02-28)

Bug Fixes

  • core: don't refresh collection state via Collection.load() (f5be639), closes #5268
  • core: fix type of options parameter in repository.upsert/Many() (4c12e7f)
  • core: support raw fragments in orderBy of 1:m and m:n relations (ed80163), closes #5277

Performance Improvements

  • core: improve composite PK hashing (73094ef)
  • core: improve hydration of simple FKs (c4bd1f0)
  • core: optimize adding entities to large collections (8a960d5)

6.1.5 (2024-02-21)

Bug Fixes

  • core: allow serializing raw SQL fragments outside of entity serialization (9158f51), closes #5257
  • core: ensure missing type validation ignores enums (a916710), closes #5255
  • entity-generator: fixed generation of unsigned columns (#5254) (d78da29)

6.1.4 (2024-02-16)

Bug Fixes

  • core: fix populating 1:1 inverse sides when virtual FK is not selected (46cb6a1), closes #5245

6.1.3 (2024-02-13)

Bug Fixes

  • core: fix extra updates when embedded property name matches inner field name (e008dab), closes #5240
  • core: fix validation for removing items from 1:m collections (34b8473), closes #5243
  • postgres: implement casting for JSON queries on types like double or bigint (b00eae6), closes #5239

6.1.2 (2024-02-11)

Bug Fixes

  • core: allow multiple abstract levels for STI entities (0c56118), closes #3745
  • core: respect user provided env vars over those from .env file (e25ca11)

Features

  • entity-generator: add the ability to use custom and/or core base entity (#5232) (066dac1)

6.1.1 (2024-02-10)

Bug Fixes

  • core: consider star populates on nested positions only for one level (65d1575), closes #5213
  • core: do not enforce discriminatorColumn type (d2a016e), closes #5224
  • core: fix change detection on STI entities (3c43251), closes #5224
  • core: fix optimistic locking on STI entities (36ad806), closes #5224
  • core: respect star in parent.* populate hints (39910ab), closes #5213
  • reflection: only validate known types to allow using type aliases (d6b93be), closes #5221

6.1.0 (2024-02-04)

Bug Fixes

  • core: allow CacheAdapter.get to return Promise<undefined> (#5200) (98ce1e5), closes #5199
  • core: fix broken inference of AutoPath in TS 5.4 (#5197) (8bbc252)
  • core: make wrap(e, true).__em correctly typed to EntityManager (35d607c)
  • core: process upsert data to allow using entity instances in place of relations (9305653), closes #5165
  • core: respect upsertMany options when batching (d6d1381), closes #5209
  • core: respect hidden properties of composite PKs during serialization (3d1cba3), closes #5203

Features

  • core: add second EM parameter to onCreate and onUpdate callback (a964aeb), closes #5201
  • core: allow declarative partial loading of collection items (#5210) (5e4fa60), closes #4963
  • core: allow mapping array columns to arrays of objects via ArrayType (#5204) (42cc9cc), closes #5188
  • entity-generator: allow post processing the metadata (#5113) (e82058f), closes #5010

6.0.7 (2024-01-30)

Bug Fixes

  • core: consider PrimaryKeyProp as optional properties for em.create() (69522f2), closes #5187
  • core: do not add undefined to null types in EntityDTO (d661c68), closes #5186
  • core: fix ignoring function properties when they are optional (fb33934)
  • reflection: fix validation of string enums when loading via QueryBuilder (908864c), closes #5185

Features

  • postgres: add support for interval type (659a613), closes #5181

6.0.6 (2024-01-29)

Bug Fixes

  • core: ensure em.insertMany returns array of PKs for a single item too (#5180) (0d58aaf), closes #5179
  • core: fix TypeError caused by validation of duplicate field names (01d8c26), closes #5163
  • core: make PK properties non-nullable in EntityDTO (dc4fc6f)
  • core: respect optionality in EntityDTO type (1691a79)
  • core: validate missing populate hint for cursor based pagination on relation properties (ea48db0), closes #5155
  • mongo: ensure assign on object properties won't ignore changes (a360300), closes #5158

6.0.5 (2024-01-18)

Bug Fixes

  • core: do not infer populate: ['*'] from fields: ['*'] (f658376), closes #5139
  • core: do not mutate data provided to em.upsert/Many (3d8c242), closes #5136
  • core: don't convert mapped types for constructor parameters when creating new entity (37befd3), closes #5150
  • core: fix bigint mode detection when hydrating new entity from returning statement (a42321d), closes #5146
  • core: merge serialization hints when lazy populating (f1d2487), closes #5138

6.0.4 (2024-01-15)

Bug Fixes

  • core: respect reloaded properties of partially loaded entity during serialization (f7b6497), closes #5128

Features

  • core: allow reusing single raw fragment in multiple keys (fc967e2), closes #5129

6.0.3 (2024-01-13)

Bug Fixes

  • core: fix leaking raw fragments cache (9638410)
  • core: support raw fragments in order by with pagination (67ee6f5), closes #5110

Features

  • core: do not map array types as Loaded when partially loaded (75d035d), closes #5123
  • core: export AutoPath and UnboxArray types (000c50c), closes #5124
  • core: map double and decimal properties to number or string based on the runtime type (312f293), closes #5120
  • core: provide mapped custom types into constructor with forceEntityConstructor (b293789), closes #5118

6.0.2 (2024-01-09)

Bug Fixes

  • core: allow calling em.remove with not managed entity (88e055e), closes #5103
  • core: respect logging options in em.count (3b94bf9), closes #5085
  • core: respect logging options in em.count (481d02e), closes #5085

Features

  • core: add wrap(entity).isManaged() (5931649), closes #5082
  • entity-generator: allow customizing entity name based on schema name (1e5afb8), closes #5084

6.0.1 (2024-01-08)

Note: Version bump only for package @mikro-orm/core

6.0.0 (2024-01-08)

Bug Fixes

  • core: allow using classes with private constructor with EntitySchema (d4d5b5e)
  • core: collection.loadItems() should respect wildcard populate (7f3065f), closes #4977
  • core: do not load all env vars from .env files automatically (09e60f7)
  • core: ensure correct serialization of not fully populated collections (a39a850)
  • core: ensure propagation and change-tracking works with useDefineForClassFields (#4730) (83f24aa), closes #4216
  • core: fix automatic calling of ensureDatabase on init (827b1f1)
  • core: fix hydration of complex FKs with joined strategy (a4f30ac)
  • core: fix hydration of object embeddables via joined strategy (b3e3e55), closes #5020
  • core: ignore SQL converter on object embeddables with custom types (83b989e), closes #5074
  • core: improve EntitySchema typing for repository option (37ee42e), closes #5006
  • core: make em.create strictly typed for relations too (#4752) (3535cc0), closes #4748
  • core: make Loaded type more flexible (c95e3b6), closes #3277
  • core: mark Reference.set() as private (#5017) (5aebf0b), closes #5003
  • core: refactor mapping of Date properties (#4391) (3a80369), closes #4362 #4360 #1476
  • core: respect @Index and @Unique decorators on embeddables (#4736) (c3d7717)
  • core: respect global schema option in first level cache (1833455)
  • core: respect schema option for entity instances in em.insert/Many (7eae031), closes #4424
  • core: return managed entity from em.refresh() (0bf5363)
  • core: return managed entity from em.refresh() (55815f4)
  • core: rework Collection initialization to use em.populate() (#4571) (7495142), closes #4464
  • core: rework pivot table joining (#4438) (0506d36), closes #4423
  • core: support embedded properties with conflicting property names (b43ef63), closes #5065
  • core: use join on conditions for populateWhere (#4025) (a03e57c), closes #3871
  • entity-generator: use index expressions for complex indexes (e.g. conditional) (64a39f8), closes #4911
  • knex: respect connection type in em.getKnex() (46957ba)
  • mongo: don't rename id to _id for embeddables and entities without serialized PK (0cee82d), closes #4960
  • postgres: allow postgres array operators on embedded array properties (ecf1f0c), closes #4930
  • postgres: parse timestamp dates less than year 100 (e774d40), closes #5071
  • respect postgresql no timestamptz precision default (#3832) (9fd7e26)
  • sql: do not alias conditions for update queries with collection operators (5820d66), closes #4956
  • sql: do not branch to-many joins for $and with a single item (a737b20)
  • test: fixed seed-manager.test.js on windows (#4924) (27a4504)

Code Refactoring

  • remove JavaScriptMetadataProvider (4e337cb)
  • remove Reference.load(prop: keyof T) signature (#5015) (32b48f7)

Features

  • core: add @EnsureRequestContext decorator + rename @UseRequestContext (5e088ae), closes #4009
  • core: add Collection.load() method (8aa1ad1)
  • core: add EagerProps symbol to respect eager props on type level (dfcf1f8)
  • core: add em.findAll() with optional where option (#4946) (23b0551), closes #3982
  • core: add FindOptions.exclude (#5024) (fe239cf)
  • core: add GeneratedCacheAdapter for production usage (#4167) (bd478af), closes #4164
  • core: add Hiddentype as an alternative to HiddenProps symbol (#5009) (c047bb1)
  • core: add HiddenProps symbol as type-level companion for hidden: true (7984769), closes #4093
  • core: add MikroORM.initSync() helper (#4166) (8b1a1fa), closes #4164
  • core: add Opt type as an alternative to OptionalProps symbol (#4753) (8853904)
  • core: add orm.checkConnection() helper (#4961) (b868f02), closes #4959
  • core: add ScalarRef and EntityRef types to allow explicit control (1ef7856), closes #4907
  • core: add sql.now(), sql.lower() and sql.upper() functions (#5044) (016fe63)
  • core: add sql.ref() helper (#4402) (b695811)
  • core: add cursor-based pagination via em.findByCursor() (#3975) (1e6825f)
  • core: add customizable LoggerContext with labeling support (#4233) (b985646), closes #4230
  • core: add discovery hooks onMetadata and afterDiscovered (#4799) (5f6c4f8)
  • core: add entity to identity map on em.persist() (1b09d26), closes #4905
  • core: add global serialization.forceObject option (731087d), closes #4881
  • core: add optional Type.compareValues method to allow custom comparators (732307a), closes #4870
  • core: add support for indexes on JSON properties (#4735) (82c8629), closes #1230
  • core: allow all CountOptions in Collection.loadCount() (25d1851)
  • core: allow auto-discovery of base classes with EntitySchema (10cfd28)
  • core: allow class references in subscribers array (7c8f776), closes #4231
  • core: allow configuring filters in Reference.load() and Collection.load() (#5025) (06012f7), closes #4975
  • core: allow defining serialization.forceObject: true on type level (#5045) (88eb3e5)
  • core: allow disabling colors via colors ORM config option (1bcaf09), closes #5037
  • core: allow extending EntityManager (#5064) (6c363e7)
  • core: allow inferring populate hint from filter via populate: ['$infer'] (#4939) (080fdbb), closes #1309
  • core: allow M:1 and 1:1 relations in virtual entities (#4932) (164a69e)
  • core: allow mapping database defaults from inline embeddables (#4384) (22ad61e), closes #3887
  • core: allow overriding global logging options on per-query basis (#4273) (51b6250), closes #4223
  • core: allow overriding ORM config path via --config (#3924) (2c929e0)
  • core: allow passing string values for PopulateHint enum (populateWhere) (2bd21eb)
  • core: allow populating collections with references (#4776) (3da6c39), closes #1158
  • core: allow setting logger context on EM level (#5023) (7e56104), closes #5022
  • core: allow type-safe populate all via populate: ['*'] (#4927) (7780f34), closes #4920
  • core: allow using Ref wrapper on scalar properties (#4358) (f9c30f1)
  • core: allow using dataloader for references and collections (#4321) (8f4790f), closes #266
  • core: allow using string values for loadStrategy and flushMode (f4e4e3b)
  • core: auto-join M:1 and 1:1 relations with filters (#5063) (66a6b75), closes #4975
  • core: improve validation of bidirectional 1:1 relations (7eb6ee6)
  • core: infer property type from default value (#4150) (38be986), closes #4060
  • core: make em.insert/Many strictly typed (require all properties) (01935e6)
  • core: native BigInt support (#4719) (31a905c)
  • core: re-export the core package from all drivers (#3816) (175c059)
  • core: remove static require calls (#3814) (b58f476), closes #3743
  • core: require mappedBy option for 1:m properties (716aa76)
  • core: require explicitly marked raw queries via raw() helper (#4197) (9c1b205)
  • core: respect ignoreFields on type level in wrap().toObject() (15de7a0), closes #4198
  • core: respect schema parameter in clientUrl (#4998) (9176ee0), closes #4997
  • core: respect naming strategy and explicit field names on embedded properties (#4866) (6151f3b), closes #4371 #2165 #2361
  • core: respect updates to M:N inverse sides and batch them (#4798) (ec65001), closes #4564
  • core: return Loaded type from Ref.load() (bc3ffa9), closes #3755
  • core: return single entity from em.populate() when called on single entity (4c4ec23)
  • core: rework serialization rules to always respect populate hint (#4203) (32d7c5f), closes #4138 #4199
  • core: strict partial loading (#4092) (d5d8c2d), closes #3443
  • core: support atomic updates via raw() helper (#4094) (1cd0d1e), closes #3657
  • core: support mapping one column to different STI properties (#4769) (e8d391b), closes #2388 #4440
  • core: throw when trying to iterate on a not initialized collection (2a3fd27), closes #3750
  • core: validate abstract target in relation decorators (dddb901)
  • core: validate duplicate field names (#4968) (71fead4), closes #4359
  • core: validate missing relation decorator (af31b3b), closes #3807
  • entity-generator: added ability to output type option in decorator (#4935) (2d1936a)
  • entity-generator: allow generating scalar properties for FKs (#4892) (abad6ca), closes #4898
  • entity-generator: allow local and global configuration of all options (#4965) (2876b8a)
  • entity-generator: allow overriding generated entity file name (4ebc8e3), closes #5026
  • entity-generator: detect more ManyToMany relations (#4974) (d0e3ac9)
  • entity-generator: generate OptionalProps and other symbols for EntitySchema (00f0a34)
  • mysql: support order by nulls first/last (#5021) (df75b24), closes #5004
  • postgres: add support for native enums (#4296) (8515380), closes #2764
  • postgres: add support for weighted tsvectors and a custom regconfig (#3805) (a0e2c7f), closes #3317
  • query-builder: add support for lateral sub-query joins (99f87c4), closes #624
  • query-builder: allow joining sub-queries (#4747) (613332c), closes #4429 #4549
  • query-builder: respect discriminator column when joining STI relation (57b7094), closes #4351
  • query-builder: support virtual entities (27f0c83), closes #5069
  • schema: add options to schema.ensureDatabase() method to create/clear (6a12fe1)
  • sql: add native support for generated columns (#4884) (a928291)
  • sql: print number of affected rows for insert and update queries (36336d9)
  • sql: rework joined strategy to support the default populateWhere: 'all' (#4957) (e5dbc24)
  • sql: support $some, $none and $every subquery operators (#4917) (50d2265), closes #2916
  • sql: use joined strategy as default for SQL drivers (#4958) (90ec766)
  • sql: use returning statements for reloading version fields on update (0a3abd7)

Performance Improvements

  • core: cache if entity has event listeners (cfa8d52)
  • core: optimize handling of FK value propagation (f3d0ec5)
  • core: speed up detection of constructor/toJSON parameters during discovery (a1288de)

BREAKING CHANGES

Please see the upgrading guide.

5.9.7 (2023-12-30)

Bug Fixes

  • core: check for root entity properties in em.canPopulate() when using STI (b8fcf45), closes #5043
  • core: fix eager loading detection with multiple populate hints for one property (da1daf5), closes #5057
  • core: support pivot entities with autoincrement PK (e250634), closes #4988
  • postgres: respect column length in down migrations (222e2b8), closes #5048

5.9.6 (2023-12-21)

Bug Fixes

  • core: fix assign on collections of unloaded entities (b60e4ee)
  • core: fix extra updates with select-in strategy and composite FKs (c848f8c)

5.9.5 (2023-12-15)

Bug Fixes

  • core: ensure eager loading on deeper levels work with joined strategy (cc5f476)
  • core: fix extra updates for composite FKs that share a column (78772fb)
  • core: fix infinite loop with populate: true and refresh: true (#5001) (9f63378)
  • core: fix returning statement hydration after em.upsert (a7e9a82), closes #4945
  • core: respect context in virtual entity expression callback (84d42a7)
  • postgres: allow using array operators (e.g. @>) with object arrays (6a5a1ef), closes #4973
  • schema: improve json default diffing for down migrations (5bc19ba)
  • sql: deduplicate keys in batch update queries (7de7a48)

5.9.4 (2023-11-17)

Bug Fixes

  • cli: support mikro-orm-esm on windows (c491af9)
  • core: fix auto-refresh detection in em.find for inlined embedded properties (759b7b8), closes #4904
  • core: support composite PKs in em.upsertMany() (85c38d4), closes #4923
  • mysql: improve diffing of defaults for JSON columns (d92a440), closes #4926
  • schema: do not inherit schema for FKs if not a wildcard entity (cc7fed9), closes #4918
  • schema: respect explicit schema in FKs to STI entities (cc19ebb), closes #4933
  • schema: respect up migration when detecting column renaming in down migration (d5af5bd), closes #4919

5.9.3 (2023-11-06)

Bug Fixes

  • core: only check the same entity type when detecting early update/delete (fef7a1b), closes #4895
  • core: return DriverException from em.upsertMany() (1ebfbdd), closes #4897
  • core: fix populating relations with cycles via select-in strategy (d0b35da), closes #4899

5.9.2 (2023-11-02)

Bug Fixes

  • mongo: fix support for ignoreUndefinedInQuery (cef26c5), closes #4891

5.9.1 (2023-10-31)

Bug Fixes

  • core: propagate to owning side of 1:1 relation even if not initialized (9b2c9fe), closes #4879

5.9.0 (2023-10-24)

Bug Fixes

  • core: apply convertToJSValueSQL on composite FKs too (41425cb), closes #4843
  • core: clean up removed entities from relations in identity map (1e3bb0e), closes #4863
  • core: infer property type from columnType for non-inferrable types (e.g. unions with null) (6bc116a), closes #4833
  • core: remove some computed properties from metadata cache (eb138ad)
  • core: use write connection for fetching changes after upsert/upsertMany (#4872) (6b444ed), closes #4868
  • serialization: run custom serializer on getters (#4860) (e76836e), closes #4859

Features

5.8.10 (2023-10-18)

Bug Fixes

  • reflection: ensure complete stripping of relative paths with multiple leading slashes (#4844) (8a635c7)

5.8.9 (2023-10-15)

Bug Fixes

  • core: respect database name in clientUrl of read replicas (015d4f4), closes #4813
  • query-builder: merge raw join results in qb.execute() (#4825) (5a28e9b), closes #4816 #4741

5.8.8 (2023-10-11)

Bug Fixes

  • core: do not rehydrate values provided to constructor (8ff3f65), closes #4790
  • core: hydrate relations with mapToPk as scalars to support custom types (4118076), closes #4803

Performance Improvements

  • core: fix duplicate processing of collection items when flushing (a8a1021), closes #4807

5.8.7 (2023-10-05)

Bug Fixes

  • core: ensure virtual relation properties have no effect on commit order (606d633), closes #4781
  • core: fix conditions in em.upsertMany with composite keys (2f58556), closes #4786
  • core: fix extra updates when nullable embedded properties contain FK (77ffa4f), closes #4788
  • core: improve handling of nullable embedded properties (eae7e38), closes #4787

5.8.6 (2023-10-02)

Bug Fixes

  • core: respect disableContextResolution option when forking (5964e52), closes #4717 #3338

5.8.5 (2023-09-30)

Bug Fixes

  • core: pin all internal dependencies (f4868ed), closes #4764
  • mongo: fix querying object embedded JSON properties (b38a327), closes #4755

5.8.4 (2023-09-27)

Bug Fixes

  • core: fix recomputing of changesets when entity has unique properties (d03afad), closes #4749
  • query-builder: fix mapping of complex joined results with cycles (a9846dd), closes #4741

Features

  • core: add EntityRepository.getEntityName() method (#4745) (47bfedd)
  • core: allow setting default schema on EntityManager (#4717) (f7c1ef2)
  • core: deprecate UseRequestContext decorator (#4744) (280733f)

5.8.3 (2023-09-24)

Bug Fixes

  • core: do not skip cjs/mjs/cts/mts extensions during folder-based discovery (ce574a4), closes #4727
  • core: ensure no duplicates exist in checks/indexes/hooks (fb523c8), closes #4733
  • core: fix updating complex composite key entities via UoW (#4739) (898dcda), closes #4720
  • knex: allow using knex query builder as virtual entity expression (#4740) (427cc88), closes #4628

5.8.2 (2023-09-20)

Bug Fixes

  • core: fix query processing when PK is falsy (#4713) (3624cb7)

Features

  • core: allow to use .ts files as configuration without ts-node (#4702) (bda7eca), closes #4701

5.8.1 (2023-09-12)

Bug Fixes

  • core: ensure entity is not in persist stack after em.insert/Many() is called (94eed5e), closes #4692
  • core: ensure merging of data to already loaded entities won't fail in some cases (f6e8204), closes #4688
  • core: try to fix merging of large collections loaded via joined strategy (faae84e), closes #4694

5.8.0 (2023-09-10)

Bug Fixes

  • core: default baseUrl value to '.' when registering ts-node (#4680) (cc0fc5f), closes #4679
  • core: fix assigning collection items with updateNestedEntities: false (e1bfd20)
  • core: fix metadata cache for @Check() with callback signature (44d973e), closes #4505
  • core: fix removing entity that has an inverse relation with M:1 owner property (fbed4a6), closes #4578
  • core: ignore null values of unknown properties in assign() (a600f55), closes #4566
  • core: remove old items from 1:m collections via set() even if not initialized (b03e165)
  • core: respect filters with joined loading strategy (#4683) (847c35a), closes #704 #2440
  • core: support calling em.findAndCount() on virtual entities with orderBy (7f328ac), closes #4628
  • core: support calling em.insertMany() with empty array (2f65bc8), closes #4640
  • mysql: fix extra updates on entities with non-primary autoincrement property (5d6ebe3), closes #4577
  • query-builder: make QBFilterQuery type more strict (755ef67)
  • schema: respect columnType on enum properties (#4601) (0eae590)

Features

  • core: add clear option to em.transactional() (01d1ad7)
  • core: add Collection.isEmpty() method (#4599) (2d8d506)
  • core: add Collection.slice() method (#4608) (7c99c37)
  • core: add Collection helpers map/filter/reduce/exists/findFirst/indexBy (3ba33ac), closes #4592
  • core: allow disabling duplicate entities discovery validation (#4618) (3ff0dda)
  • core: allow enabling result cache globally (5876c99), closes #4656
  • core: allow fine-grained control over em.upsert() (#4669) (ab0ddee), closes #4325 #4602
  • core: allow global config option for disableIdentityMap (ef32b14), closes #4653
  • core: respect batchSize in em.upsertMany() (4a21c33), closes #4421
  • entity-generator: allow skipping some tables or columns (e603108), closes #4584
  • sql: add readOnly option to em.begin() and em.transactional() (86bb7d4)
  • sql: allow specifying query comments (06d4d20)

5.7.14 (2023-07-27)

Bug Fixes

  • core: ensure JSON arrays are correctly handled (5327bcc), closes #4555
  • core: inferring JSON type based on columnType when mapping to array (96d87ba), closes #4548
  • seeder: allow run method to return without promise (#4541) (8012507)

5.7.13 (2023-07-16)

Bug Fixes

  • core: deprecate wrappedReference on m:1 decorator options (d7f362e)
  • core: do not fail when detecting mapped type for enum columns (b94048b), closes #2323
  • core: fix updating composite key entities via flush (733cb80), closes #4533
  • core: respect persist: false on relations (a127fff), closes #4504
  • postgres: fix hydration of 1:1 properties when entity has version fields (474eb73), closes #4497
  • sqlite: allow using clientUrl without a host (#4447) (9a01bbd)

5.7.12 (2023-06-10)

Bug Fixes

  • core: allow async filter callbacks in em.addFilter() on type level (308c45b)
  • core: fallback to direct property access (320c52f), closes #4434 #4216
  • core: fix extra updates when forceEntityConstructor enabled (41874eb), closes #4426
  • core: respect undefined when assigning to object properties (217ff8f), closes #4428
  • core: respect falsy values in em.upsert (ef22b21), closes #4420
  • mongo: allow saving self-references inside M:N properties in one flush (c1b5fc4), closes #4431

Features

5.7.11 (2023-06-01)

Bug Fixes

  • core: fix change tracking of optional properties with forceUndefined (9303c3f), closes #4412
  • core: fix populating relations in parallel via Promise.all (#4415) (f4127a7), closes #4213 #4343

5.7.10 (2023-05-23)

Bug Fixes

  • core: exclude collections from returning clause from em.upsert (e342449), closes #4382
  • core: re-export Reference class as Ref (50eea37), closes #4161
  • core: respect skipNull when serializing object properties/embeddables (f27ee9a), closes #4383

Features

  • core: add meta to EventArgs to the upsert events (ed431ea)

Performance Improvements

  • core: set Collection._property early for managed entities (23ca682), closes #4376

5.7.9 (2023-05-22)

Bug Fixes

  • core: fix mapping of results from partial loading (541c449), closes #4377

Performance Improvements

  • core: don't double clone when merging data to exiting entity (c175652), closes #4376

5.7.8 (2023-05-21)

Bug Fixes

  • core: ensure em.upsert returns initialized entity (#4370) (bad0b37), closes #4242
  • core: ensure strict type-checking of enum queries (8f8464a)

Features

  • query-builder: add qb.returning() (b5ab66b)

5.7.7 (2023-05-14)

Bug Fixes

  • core: deprecate @Subscriber() decorator (033b71d)
  • core: revert the const enums as they break projects with isolatedModules (8b23674), closes #4350

Features

  • core: add options argument to filter callback (c57ee5e), closes #4352

5.7.6 (2023-05-13)

Bug Fixes

  • core: allow em.populate() on lazy formula properties (5c6bb13)
  • core: ensure database values are used in the identity map keys (46b5e3a), closes #4335
  • core: fix re-populating relations with refresh: true (74b6a98), closes #4339

Features

  • core: add wrap(entity).populate([...]) shortcut (6b519c4)
  • core: log number of results (261b3d9)

Performance Improvements

  • core: define some enums as const enums, so they get inlined (3cb43ba)

5.7.5 (2023-05-09)

Bug Fixes

  • core: deprecate wrappedReference and IdentifiedReference (ab79832)
  • core: detect early deletes for compound unique constraints (f9530e4), closes #4305
  • core: fix extra updates caused by bigint type (2acd25e), closes #4249
  • core: fix extra updates caused by property initializers when forceEntityConstructor is enabled (7ee883d), closes #4323
  • core: respect schema name when checking duplicate table names (5b89b00), closes #4332

5.7.4 (2023-05-01)

Bug Fixes

  • core: expand PK conditions inside top level operators (305ce5d), closes #4222
  • core: fix extra updates when caching inlined embedded entities (3dc3b32), closes #4295
  • core: fix object merging in assign helper when current value is scalar (c012f95), closes #4290
  • core: only consider valid query as tuple comparison (7212a53), closes #4220
  • migrations: respect custom migration name in migration class names (#4294) (c402a99)

5.7.3 (2023-04-28)

Bug Fixes

  • core: merge returned values to the initial entity snapshot (e123076), closes #4284

Features

  • core: add beforeUpsert and afterUpsert events (db9ff09), closes #4282
  • core: allow creating DELETE changesets via uow.computeChangeSet() (61479b6), closes #4280
  • core: allow disabling validation for duplicate tableName (dfb87bf)

5.7.2 (2023-04-25)

Bug Fixes

  • core: don't skip updates from propagation triggered via em.create() (30778c3), closes #4209
  • core: respect forceUndefined in the original entity data (d2d9cc0), closes #4262 #4266
  • core: respect serialize() skipNull option inside embeddables (4cf7669), closes #4263

5.7.1 (2023-04-25)

Note: Version bump only for package @mikro-orm/core

5.7.0 (2023-04-23)

Bug Fixes

  • core: clean up bidirectional references after removal of entity (bfd3840), closes #4234
  • core: detect JsonType based on columnType (#4252) (2e01622), closes #4229
  • core: do not try to propagate changes to mapToPk relations (7028890), closes #4254
  • core: fix mapping of joined relations with buffer PKs (8e9e7ee), closes #4219
  • core: merge env vars with explicit configuration recursively (392a623), closes #4235
  • core: prevent tuple type properties from being converted to array when serializing entities (#4205) (04ad72e)
  • core: propagate changes from extra updates back to the original changeset (77f5c14), closes #4245
  • core: rework JSON value processing (#4194) (5594c46), closes #4193
  • query-builder: fix pagination when PK uses BigIntType (b789031), closes #4227

Features

  • core: allow disabling transactions (#4260) (8e8bc38), closes #3747 #3992
  • core: deprecate persist/flush/remove methods from EntityRepository (#4259) (eba4563), closes #3989
  • core: validate repository type in repo.populate() and repo.assign() (301bdf8), closes #3989
  • core: validate unique tableName (0693029), closes #4149
  • migrations: add support for custom migration names (#4250) (fb2879e)

Performance Improvements

  • core: fix eager loading of multiple properties causing a cycles (ecbecfc), closes #4213

5.6.16 (2023-04-04)

Bug Fixes

  • core: don't override discovery options when alwaysAnalyseProperties is used (f4acc91), closes #4181
  • core: ensure correct FK as PK identity map key (475e2a3)
  • core: fix hydration of 1:1 FK as PK property via joined strategy (75653f0), closes #4160
  • core: hydrate collection items when merging data in factory.create (493d653), closes #4173
  • core: use JsonType automatically when type: 'jsonb' (43cb6d7)
  • mysql: fix mapping of PK in upsertMany (0f4cf85), closes #4153

Features

  • core: normalize zero in bigint type to string (78a8e48), closes #4159
  • migrator: allow disabling logging via migrations.silent (#4182) (4b778bf), closes #4124

Performance Improvements

  • core: populating many large 1:M collections (875d966), closes #4171

Reverts

  • Revert "chore(release): v5.6.16 [skip ci]" (49faac9)
  • Revert "chore(release): update internal dependencies to use tilde [skip ci]" (381cba1)

5.6.15 (2023-03-18)

Bug Fixes

  • core: fix nested inlined embedded property hydration (2bbcb47), closes #4145
  • core: fix snapshot of relation properties loaded via joined strategy (6015f3f), closes #4129
  • core: respect explicit unsigned option (#4126) (846a57d)

5.6.14 (2023-03-12)

Bug Fixes

  • core: allow comparing {} with Object.create(null) (955895e), closes #4109
  • core: assigning to reference properties inside embeddables (ede04e6), closes #4106
  • core: discover pivot entities automatically when specified by reference (3ea4776)
  • core: ensure populate: true supports nested relations inside M:N (b42f0f3)
  • core: extra update on a reference with 1:1 self-reference (f2fa2bd), closes #4121
  • core: fix nested object merging in JSON properties (694ef28), closes #4101
  • core: improve handling of complex pivot table entities (45449c4), closes #4083

Features

  • core: allow skipping convertToDatabaseValue during hydration (d1ce240), closes #4120

5.6.13 (2023-03-01)

Bug Fixes

  • core: fix deep assigning of collection items with complex composite keys (95631f4), closes #4074
  • core: fix diffing of JSON properties (2e9a026), closes #4078
  • core: log abstract entity names during discovery (e721ad7), closes #4080

5.6.12 (2023-02-26)

Bug Fixes

  • core: enforce select-in strategy for self-referencing eager relations (cc07c6b), closes #4061
  • core: ensure custom types are processed in em.upsert/upsertMany/insertMany (53a08ac), closes #4070
  • core: move repository cache to the EM fork (05fabb9), closes #3074
  • mysql: fix reloading of db defaults for complex composite PKs (8dcc1bd), closes #4062

5.6.11 (2023-02-17)

Bug Fixes

  • core: do not process custom types twice in em.upsertMany (3928e78), closes #3787
  • core: fix mapping of null in datetime columns (73e483a), closes #4057
  • core: infer custom type even if there is explicit columnType option (a901112)
  • schema: fix merging of primary keys from base entity (c40e15c), closes #4051

5.6.10 (2023-02-17)

Bug Fixes

  • core: convert custom types in delete queries from orphan removal (b32df88), closes #4033
  • core: convert custom types when snapshotting scalar composite keys (391732e), closes #3988
  • core: map returned values correctly after batch insert (a61a84f)
  • core: map values from returning statement in em.upsert (bed72fe), closes #4020
  • core: use types from discovery.getMappedType on runtime too (2f682e3), closes #4042

Performance Improvements

  • core: improve result mapping and snapshotting (#4053) (8bb0268)

5.6.9 (2023-02-10)

Bug Fixes

  • core: add missing repo.upsertMany shortcut (c101d51)
  • core: do not serialize JSON values twice (f06eeb0)
  • core: do not snapshot missing embedded properties as undefined (4ad4cdf)
  • core: ensure json type is recognized with type: 'jsonb' (e1f82bc), closes #3998
  • core: improve handling of not managed references created via ref()/rel() (2e814e8), closes #4027

Features

  • core: optionally log if entity is managed or not (68e073b)
  • migrations: add cjs option for emit (#4016) (d5cfa22), closes #4005

5.6.8 (2023-01-25)

Bug Fixes

  • mysql: fix reloading of database defaults for complex composite PKs (d36af00), closes #3965
  • reflection: do not rehydrate metadata cache for enum items unless needed (e4761b6), closes #3955

Features

  • core: add forceConstructor option to @Entity() decorator (c89b4af)
  • core: add hydrate option to @Property() decorator (f4ba092), closes #3936
  • core: allow filtering in Collection.loadCount() (#3958) (08ea320), closes #3527

5.6.7 (2023-01-13)

Bug Fixes

  • core: ensure propagation during hydration dont produce extra updates (88595bd), closes #3941
  • core: propagate ManyToOne only to matching collections (STI) (#3940) (8ff7ed1), closes #3939
  • core: respect mapToPk during hydration with custom type FK (75d05ee), closes #3921

5.6.6 (2023-01-10)

Bug Fixes

  • core: do not allow functions and symbols in FilterQuery (85b1fc1), closes #3928
  • core: make FilterQuery strict again! (5427097)

5.6.5 (2023-01-09)

Bug Fixes

  • core: do not fail on serialization when POJO instead of embeddable instance found (c8de84b)
  • core: make serialization of embedded properties support null instead of value (3006507), closes #3906

Features

5.6.4 (2023-01-04)

Bug Fixes

  • mongo: register serialized PK get/set pair only when explicitly requested (7004100), closes #3900

5.6.3 (2022-12-28)

Bug Fixes

  • core: delay snapshotting of entity state to fix differences with joined strategy (cbf62fa), closes #3876
  • core: do not convert custom mapped type twice in Reference.createFromPK (7dfff45), closes #3878

5.6.2 (2022-12-25)

Bug Fixes

  • core: fix assignability of Loaded type to naked entity (e574924), closes #3865

Features

  • core: validate bidirectional M:N with pivotEntity (5e793a2), closes #3860
  • core: validate FK as PK is always an owning side (330c4e2), closes #3869

5.6.1 (2022-12-20)

Bug Fixes

  • core: allow adding array of refs to collection (#3859) (0ce85e9)
  • core: clone event manager when forking in em.transactional (0e523b3), closes #3857
  • core: do not unset non-null relations when propagating remove operation (69a7f94), closes #3854
  • core: fix compiled functions when relation property uses hyphens (22350bd), closes #3813
  • core: fix populating relation with composite FK as primary key (b27578f), closes #3844
  • core: improve inference in em.findX() methods (fcb1739)
  • core: propagation with nullable 1:1 relation (#3851) (d77c370), closes #3850
  • core: remove readonly modifier from Populate type (7b2dfb9)

5.6.0 (2022-12-09)

Bug Fixes

  • core: deprecate type option in favour of driver exports (7180f23), closes #3743
  • core: do not mark entities as populated via em.merge() (bfa4962), closes #3812
  • core: do not process mapped types twice in em.upsert() (434d417), closes #3787
  • core: ensure correct result in ChangeSet.getPrimaryKey(true) (2e74a34), closes #3737
  • core: fix query execution inside hooks sometimes hanging (d68b9bd)
  • core: make ChangeSet.getPrimaryKey() response stable (d32c956)
  • core: remove readonly from properties of FilterQuery (2a2a13d), closes #3836
  • core: return Ref & LoadedReference from ref() (c85e507), closes #3840
  • core: serialize not managed relations as populated (89b4dab), closes #3788
  • core: support hidden flag on primary keys (4935505)
  • embeddables: respect explicit null only for object embeddables (6e0bedf), closes #3772
  • mysql: ensure bigint columns are mapped to string (d3d50ba), closes #3739
  • mysql: respect auto_increment_increment when batch inserting (516db6d), closes #3828
  • postgres: use postgres as the management db name + allow override (eab1668), closes #3769
  • query-builder: respect case-insensitive regexp flag (1a1d381), closes #3801
  • ts: allow string dates in em.create() (d0607d5)

Features

Performance Improvements

  • core: never clone Platform and EntityMetadata instances (9e05104), closes #3720

5.5.3 (2022-11-10)

Bug Fixes

  • core: respect filters when loading m:n relations (#3716) (86a65a7)

Performance Improvements

  • core: redefine the internal __helper getter with a static value (77d0549)

5.5.2 (2022-11-07)

Bug Fixes

  • core: prefer custom pivot entity for inference of FK names (08a7dc2), closes #3626

5.5.1 (2022-11-05)

Bug Fixes

  • core: compare original entity data when checking for unique props (53ff984), closes #3644
  • core: fix em.upsert() when entity is already in context (f590b79), closes #3667
  • core: fix comparing empty arrays (be4cdf3), closes #3694
  • core: fix orphan removal for collections of complex/nested composite keys (925c1d2), closes #3666
  • core: fix querying for a complex composite key via inverse side (b99e7bb), closes #3669
  • core: improve detection of entity file path via stack trace (d329d32), closes #3668
  • core: improve propagation of changes to 1:1 relations (389b4a2), closes #3614
  • reflection: improve detection of array properties (8f8f820), closes #3690

Features

  • core: add em.repo() shortcut (feebd7c)
  • core: add EntityOptions.repository shortcut (2cbb129)
  • core: add EntityRepository.upsert() shortcut (31d6d77)
  • core: add ref alias for ref relation property option (249a407)
  • core: add Rel<T> and Ref<T> relation types (44acefb)
  • core: add context param to Type.convertToDatabaseValue() (a933e98), closes #3567
  • core: allow using second argument of @OneToOne as options (115462d)
  • core: propagate parent entity to collection item payload in assign (6045511), closes #3654
  • core: propagate parent entity to collection item payload in create (bb9f8d9), closes #3654
  • core: support composite unique keys in em.upsert() (3cf79d6), closes #3656

5.5.0 (2022-10-23)

Bug Fixes

  • core: always compare boolean properties as booleans (c30c680), closes #3576
  • core: do not ignore default option in version properties (1572008)
  • core: do not ignore falsy version values like 0 (754d672)
  • core: fix assigning objects to collections (#3628) (82a9708)
  • core: fix changing 1:1 relations value (7b6e6f7), closes #3614
  • core: fix removing entities with complex composite keys (6d6e9f4), closes #3543
  • core: fix validation of EM param in assign (6572a59), closes #3571
  • core: hydrate mapToPk properties with the PK value (559ae28)
  • core: improve entity path detection with SWC 1.3.4+ (#3568) (9a2cb8c)
  • core: merge entity automatically via em.create(E, {}, { managed: true }) (24d206f), closes #3571
  • core: propagate entity removal to collection properties (25c1c06)
  • core: rework handling of orphan removal for 1:m collections (925c798), closes #3564
  • core: serialize embedded JSON properties correctly when used in inline embeddable (feef8b3), closes #3519
  • mongo: fix populating 1:1 owners from inverse side (25ee03a)
  • query-builder: support top level $not operator in join condition (#3609) (047504f)

Features

  • core: add defineConfig helper (#3500) (67d3c68)
  • core: add em.refresh(entity) method (#3522) (dbe8aa4)
  • core: add em.upsert() method (#3525) (3285cdb), closes #3515
  • core: add MikroORM and Options exports to each driver package (#3499) (b68ed47)
  • core: add the offset into FindOneOptions (#3574) (9d5d457)
  • core: automatically detect src/dist/build folders and adjust configuration (#3497) (a8c8baf)
  • core: enable persistOnCreate by default (8424976)
  • core: maintain identity for the Reference wrapper (da1a0ef), closes #3582
  • core: provide meta and prop on custom mapped type instance (c1251d0), closes #3538
  • core: track changes on entity references (#3521) (0fb17bb)
  • core: validate missing items in enum definition (659c2de)
  • core: validate missing types in EntitySchema definition (0716566), closes #3603
  • migrations: allow configuring snapshot name (4bbe355), closes #3562
  • mongo: do not expand array queries to $in operator when nested inside $eq (e25d28e)
  • schema: add ability to ignore specific column changes (#3503) (05fb1ce), closes #1904 #1904
  • schema: try to infer runtime default values automatically (#3529) (d035781)
  • sqlite: enable returning statements in both SQLite drivers (eaf83c8)

Performance Improvements

  • core: don't propagate serialization context to hidden relations (#3592) (e706ba2)
  • core: improve support for large collections (#3573) (ea3f6fd)
  • schema: improve schema inspection speed in SQL drivers (#3549) (74dc3b1)

5.4.2 (2022-09-12)

Bug Fixes

  • core: do not double serialize nested JSON properties in embedded arrays (11112c6), closes #3327
  • core: fix dynamic loading of entities with default export (14f88cc), closes #3491
  • core: fix extracting entity reference for constructor params in em.create() (797cc3a)
  • core: fix populating of self referencing relationships (e3c835a), closes #3490
  • core: fix serialization of virtual entities (a15fc13), closes #3493
  • core: ignore * populate hints inferred from fields (c11bda6)
  • core: omit internal symbols from logged entities (29c430c)
  • core: respect serialization flags on embedded properties (8e9f6d9), closes #3429

5.4.1 (2022-09-08)

Bug Fixes

  • cli: only use dynamic imports for ESM projects (b3e43d0), closes #3442
  • core: add missing MIKRO_ORM_SCHEMA env var (#3464) (47fccac)
  • core: allow symbol as propertyKey in @UseRequestContext decorator (#3444) (6a60295)
  • core: change internal dependencies to use ~ instead of ^ (fdbf67c), closes #3468
  • core: support partial loading of inlined embeddables (9654e6e), closes #3365
  • postgres: fix inserting values with ? into FullTextType properties (5095ddb), closes #3457
  • reflection: fix inference of nullability (5f57ee1), closes #3447

Features

  • core: allow custom ORM prop name in @UseRequestContext() (#3475) (d87219e)

5.4.0 (2022-09-01)

Bug Fixes

  • core: allow embedded properties inside virtual entities (541d62d)
  • core: allow using $ne operator on embedded properties (89706b6), closes #3430
  • core: always use dynamic import, don't depend on MIKRO_ORM_DYNAMIC_IMPORTS (ba7eac6)
  • core: compile with module: 'Node16' to have real dynamic imports (#3439) (50347ef)
  • core: fix optimistic locking for entities with custom type on PK (e36bac5), closes #3440
  • core: lock entities in flush() to get around race conditions with Promise.all (b62799a), closes #2934 #3383
  • core: respect serialization options like hidden on embeddables (d198e44), closes #3429
  • core: support result caching on virtual entities (ce2b051)
  • core: update to TypeScript 4.8 and improve EntityDTO type (#3389) (f2957fb)
  • core: use acorn instead of escaya for extraction of method params (c5c09c5)
  • knex: support em.count() on virtual entities (5bb4ebe)

Features

  • core: add MikroORM.reconnect() method (53b836e)
  • core: add schema/migrator/seeder shortcuts to MikroORM class (95c8dd5)
  • entity-generator: add import extension for referenced entities (#3420) (f80809a)
  • knex: add options params to create + assign methods within EntityRepository (#3431) (cf7e9e1)

5.3.1 (2022-08-04)

Bug Fixes

  • core: copy orphan removal stack to forks when clear: false (ab72144), closes #3360
  • core: improve check for global context usage (6c906bf), closes #3361
  • core: improve cycle detection when serializing (mainly via toPOJO) (aa10802), closes #3354
  • core: respect contextName in TransactionContext (b2b6a7d), closes #3362

5.3.0 (2022-08-01)

Bug Fixes

  • core: do not trigger auto flush from inside flush hooks (e3f34aa), closes #3345
  • schema: ensure stable order queries (e56a259), closes #3330
  • schema: respect explicit columnType when comparing columns (f0a20fa), closes #3317

Features

  • add support for full text searches (#3317) (8b8f140)
  • core: add $exists mongodb operator with SQL fallback to is not null (112f2be), closes #3295
  • core: add disableContextResolution option to em.fork() (94442f9), closes #3338
  • core: add support for virtual entities (#3351) (dcd62ac)
  • core: add validation when using non-discovered entities in em.populate() (ab93106)
  • core: improve autocomplete for columnType (6bf616d)
  • core: improve autocomplete for type, updateRule and deleteRule (7ee2dcb)
  • entity-generator: allow defining entities with EntitySchema instead of decorators (b423c10)
  • mongo: add support for migrations in mongo driver (#3347) (c5c6115)

5.2.4 (2022-07-25)

Bug Fixes

  • core: do not allow passing null to required properties in em.create() (e7843fb), closes #3289
  • core: do not run onUpdate before we know something changed (6faa367), closes #3328
  • core: ensure m:n collection is not dirty after hydration (66e0a21), closes #3323 #3287
  • core: hidden properties are included in cache (#3300) (f0bc261)
  • core: respect schema when lazy loading reference via init (c876c9f), closes #3318

5.2.3 (2022-07-08)

Bug Fixes

  • core: ensure M:N collections are not dirty after populating of inverse side (21ba9b2), closes #3287

5.2.2 (2022-07-03)

Bug Fixes

  • core: consider two NaN as equal when computing changesets (#3250) (95116a0)
  • core: ensure correct context usage in all EntityManager public methods (cc6d59b), closes #3271
  • core: ensure FK as PK is not marked as initialized too early (f12f92f), closes #3269
  • core: fix populating of 1:m collections between wildcard schema entities (69c06aa), closes #3270
  • core: fix populating of relations in afterFlush hook (26ab686), closes #3005
  • core: fix querying JSON properties with operators directly (077ca62), closes #3246
  • mongo: persist explicit null value on object embeddable as null (1c56e7a), closes #3258
  • sql: fix prefixing of JSON queries nested on relations (847ff46), closes #3242

Features

  • core: propagate add operation to m:n owner even if not initialized (#3273) (dc9255c)

5.2.1 (2022-06-21)

Bug Fixes

  • core: fix reloading version values with custom types on PKs (ebd7888), closes #3209
  • core: fix serialization of entities wrapped in POJOs (af4fadf), closes #3221
  • core: ignore undefined values during options merge (9e0f559), closes #3234
  • mysql: handle mediumint PKs correctly (0bbbe5c), closes #3230
  • types: fix inference of optional PKs (424e0bb), closes #3230

Features

  • core: allow to adjust default type mapping (ca8ce57), closes #3066

Performance Improvements

  • core: allow disabling change tracking on property level (7d5e32d), closes #3019
  • core: make Collection.add on not managed entities much faster (75adda9), closes #3211

5.2.0 (2022-06-10)

Bug Fixes

  • core: allow changing PK via UoW (32ab215), closes #3184
  • core: ensure correct cached value in loadCount (4471bb8)
  • query-builder: fix processing of custom types in explicitly aliased queries (db137a6), closes #3172
  • typing detection with typescript 4.7 node16 (#3163) (08322fa)

Features

  • core: automatically discover target embeddables and relationships (#3190) (8624dc5)
  • entity-generator: allow generating bidirectional relations (8b93400), closes #3181
  • entity-generator: allow generating identified references (1fbf5ac)
  • schema: add logging to schema comparator (f96eaaf)

5.1.5 (2022-05-29)

Bug Fixes

  • cli: disable TS mode when we fail to register ts-node (457d9d3), closes #3152
  • core: assign new embeddable entity only when it is null or undefined (#3135) (4f870fb)

5.1.4 (2022-05-19)

Bug Fixes

  • core: allow asterisk in FindOptions.fields on TS level (43e1d0b), closes #3127
  • core: improve type of em.getContext() (158f077), closes #3120
  • core: improve validation of wrong entity references (#3085) (f5de135)
  • core: wrap relations in Reference wrapper when assigning entity instance (97f1f59), closes #3092
  • mongo: support queries with mongo specific operators on embeddables (2fb9002)
  • postgres: do not try to create schema for migrations when it exists (d6af811), closes #3106

Features

  • core: add strict option to em.findOneOrFail() (#3088) (d38242a)

5.1.3 (2022-04-27)

Bug Fixes

  • core: allow replacing target entity in relations with assign (90ec83f), closes #3026
  • core: do not inline query for JSON properties that match PK names (e6005d8), closes #3054
  • core: fix serialization when using partial loading for nested relations (00be9f1), closes #3011
  • core: hydrate nullable embedded properties as null (e8490f6), closes #3063
  • core: respect mapToPk when expanding properties (#3031) (757801e)
  • schema: fix diffing of indexes with too long inferred name (01ba9ed), closes #2932

Features

  • core: try to fix FK order automatically for custom pivot entities (cc9e427), closes #3040
  • core: validate decorator parameters are used properly (cb3e1dd), closes #3040
  • seeder: created shared context when calling other seeders (6fa04ae), closes #3022

Performance Improvements

  • core: do not use contextual EM where we know we are in a fork already (ba16532)

5.1.2 (2022-04-10)

Bug Fixes

  • core: allow converting custom types via em.nativeInsert() (#2979) (8d76852)
  • core: do not clean up UoW before each "flush step" (3ae732d), closes #2934
  • core: fix eager loading of nested embeddable m:1 properties (4867db9), closes #2975
  • core: fix eager loading when multiple relations target same entity (21922ce), closes #2990
  • core: fix mapping of inserted PKs with custom field names from batch insert (080d8e0), closes #2977
  • core: never reassign the same entity via em.assign() (cdfbabd), closes #2974
  • core: propagate entity removal in em.transactional() to upper context (6e5166b), closes #2973
  • core: respect connectionType in populate queries (fe40a9f), closes #2994
  • core: use correct path for relations inside embeddables with populate: true (4735dba), closes #2948
  • postgres: do not ignore custom PK constraint names (#2931) (24bf10e)
  • schema: do not create FK index for 1:1 properties (they are unique already) (473795c), closes #2942

Features

5.1.1 (2022-03-20)

Bug Fixes

  • core: fix custom pivot table entities for unidirectional relations (01bdbf6)
  • postgres: fix pagination with order by UUID PK (042626c), closes #2910
  • postgres: respect known schema when loading wild card entity relations (61d1e85), closes #2909

Features

  • core: validate em.begin was called when using em.commit/rollback (67fa076), closes #2918

5.1.0 (2022-03-13)

Bug Fixes

  • core: do not alias JSON conditions on update/delete queries (5c0674e), closes #2839
  • core: ensure all entities from inner context are merged to the upper one (7b3a6b4), closes #2882
  • core: fix object key utilities for null prototype objects (#2847) (b2cf01e), closes #2846
  • core: fix strict type for orderBy when entity has length property (ef45871), closes #2829
  • core: type global entityRepository option weakly (3faf8bc)
  • mysql: mark FK columns as unsigned for mixed composite PKs (67806cb), closes #2844
  • postgres: respect schema name in migration storage (fbf9bfa), closes #2828

Features

  • core: allow better control over connection type when using read-replicas (#2896) (e40ae2d)
  • core: allow forcing write connection via forceWriteConnection (#2838) (36d1969)
  • core: allow specifying custom pivot table entity (#2901) (8237d16)
  • core: allow using hooks for interface entities (#2895) (aee99b1)
  • core: enable QueryFlag.PAGINATE automatically for em.find() (ccb4223), closes #2867
  • core: map check constraint failures to specific error type (ebcbdff), closes #2836

5.0.5 (2022-02-27)

Bug Fixes

  • core: respect orphanRemoval in 1:1 relations (#2816) (55ff07b)
  • query-builder: use paginate flag automatically based on to-many joins (db9963f), closes #2823

5.0.4 (2022-02-22)

Bug Fixes

  • core: always create new entities as initialized (bbb30c5)
  • core: fix mapping default values of relation properties (bc57ed0)
  • core: fix propagation of FK as PK with not flushed entity (25be857), closes #2810
  • core: fix unsetting identity of orphans (1:1 with orphan removal) (91e7315), closes #2806
  • core: respect schema from config when adding new entities to context (7a6b6e2)
  • entity-generator: fix property names for columns with dashes (#2813) (c920d5f)

Features

  • core: respect load strategy specified in property definition (1a6b4b2), closes #2803

5.0.3 (2022-02-20)

Bug Fixes

  • core: do not trigger global context validation from repositories (f651865), closes #2778
  • core: fix processing of onUpdate properties (9cf454e), closes #2781
  • core: fix processing of multiple onUpdate properties on one entity (4f0e4cc), closes #2784
  • core: hydrate not-null embeddable prop even with all null values (09aee05), closes #2774
  • core: register entity to identity map as early as possible (d8f3613), closes #2777
  • core: respect deleteRule: cascade when propagating removal (f1e8578), closes #2703
  • core: revert to require() when getting ORM version to fix webpack support (6cfb526), closes #2799
  • postgres: consider int8 as numeric when inferring autoincrement value (64bc99d), closes #2791
  • typing: fix populate hints on collections where both type args are provided (e39ef5b), closes #2771

Features

  • add better-sqlite driver (#2792) (1b39d66)
  • core: add connect config option (8aaad33)
  • core: add SchemaGenerator.clearDatabase() (ecad9c6), closes #2220
  • core: add populate option to Reference.load and Collection.loadItems (1527c1a), closes #2796

5.0.2 (2022-02-16)

Bug Fixes

  • core: allow passing entity instance in repo.nativeInsert() (791c009)
  • core: do not ignore schema name from config in em.getReference() (58680fc)
  • core: do not ignore value from database even if we only have a getter (35103b3), closes #2760
  • core: respect global schema (b569686)
  • postgres: do not ignore custom PK constraint names (3201ef7), closes #2762
  • typing: remove overloads for em.nativeInsert() (e21d470)

5.0.1 (2022-02-13)

Bug Fixes

  • core: allow cloning QB with raw conditions (04d9d88), closes #2748
  • core: allow using 0 as PK (a2e423c), closes #2729
  • core: do not propagate removal to FK as PK (a0a19c2), closes #2723
  • core: fix support for complex composite (nested) PKs (a7fc7a1), closes #2647
  • core: ignore ORM packages where we failed to extract version (b1627c5), closes #2732
  • core: respect null in Loaded type (72385b3), closes #2750
  • core: return entity type from em.create() instead of New<T> (8ff277d), closes #2727
  • core: support special characters in clientUrl (43e28b8), closes #2730
  • core: use createRequire instead of dynamic import for JSON files (f567d2d), closes #2738
  • embeddables: fix loading inline embeddables with joined strategy (adaa5c6), closes #2717
  • esm: fix getting ORM version on windows with ESM (eb3a1be)
  • mongo: fix caching populated results in mongo (42ea5be), closes #2754
  • schema: fix explicit schema name support (#2752) (68631ea)
  • typing: exclude symbols and functions from FilterQuery (1d24eb8), closes #2742

Features

  • core: add getContext parameter to @UseRequestContext() (9516b48), closes #2721
  • query-builder: allow autocomplete on qb.orderBy() (fdf03c3), closes #2747
  • schema: ensure database when calling refreshDatabase() (7ce12d6)
  • seeder: refactor seeder to support running compiled files (#2751) (8d9c4c0), closes #2728

5.0.0 (2022-02-06)

Bug Fixes

  • assign: do not convert FK to entity when assigning to mapToPK property (b14c8fb), closes #2337
  • core: allow calling em.create() with reference wrapper (c069960)
  • core: allow non-standard property names (hyphens, spaces, ...) (cc68230), closes #1958
  • core: allow propagation to multiple matching inverse sides (cf7d538), closes #2371
  • core: allow putting not managed entities to remove stack (7a47151), closes #2395
  • core: allow using updateNestedEntities flag with collections (65de1a5), closes #1717
  • core: allow using MongoNamingStrategy with SQL drivers (c38c66c), closes #2693
  • core: consider non-plain objects as PKs (2fe9f2b), closes #1721
  • core: consider objects without prototype as POJO (b49807f), closes #2274
  • core: convert custom types for onCreate & onUpdate (e5f5b38), closes #1751
  • core: convert custom types for collection items in joined strategy (5b76600), closes #1754
  • core: convert custom types on PKs in update and delete queries (b33be4a), closes #1798
  • core: defer cascading of persist operation (6abb3b0), closes #2161
  • core: detect ts-jest usage (94acc18)
  • core: do not apply limit/offset to populate pivot table queries (a73c4e0), closes #2121
  • core: do not check stack trace when detecting ts-node (06cca85)
  • core: do not override existing values via prop.onCreate (fb67ea6)
  • core: do not override internal EM instance when forking EM (8139174), closes #2342
  • core: do not propagate mapToPk properties (b93c59e)
  • core: do not save entity state in merge when it's not initialized (4141539), closes #1927
  • core: ensure correct casting in deep JSON queries with operators (5c79e34), closes #1734
  • core: fix findAndCount with populate (d2f69ae), closes #1736
  • core: fix QueryFlag.PAGINATE with joined loading strategy (c6d72b8)
  • core: fix assigning embedded arrays (f02fb75), closes #1699
  • core: fix assigning to object property without value (90165ab), closes #2492
  • core: fix clearing 1:m collections (462a126), closes #1914
  • core: fix collection state when forceEntityConstructor is used (674abbb), closes #2406 #2409
  • core: fix conversion of custom type PKs in some cases (28e83ef), closes #1263
  • core: fix extraction of child condition when populating 2 (1653269), closes #1882
  • core: fix hydrating of inlined embeddables via em.create() (057317f), closes #1840
  • core: fix joined strategy with FK as PK (5412913), closes #1902
  • core: fix M:N relations with custom type PKs (3cdc786), closes #1930
  • core: fix missing embedded columns on joined select query (#2664) (88e2309)
  • core: fix nested query with fk as pk (#2650) (cc54ff9), closes #2648
  • core: fix ordering by pivot table with explicit schema name (eb1f9bb), closes #2621
  • core: fix persisting complex composite keys in m:1 relations (9f91b54), closes #1687
  • core: fix pivot tables for wild card schema entities (623dc91), closes #2690
  • core: fix populating entities with wildcard schema (98d0bfb)
  • core: fix propagation of locking option with select-in population (f3990d0), closes #1670
  • core: fix querying by complex composite keys via entity instance (293a3cb), closes #1695
  • core: fix querying by JSON properties (73108b1), closes #1673
  • core: fix reflection of enums in babel (a5b8ee9), closes #2198
  • core: fix serialization of self referencing collections (79c2a10), closes #2059
  • core: fix state of entities from result cached (0d95eef), closes #1704
  • core: fix support for nested composite PKs (14dcff8), closes #2647
  • core: fix transaction context in nested transactions (091e60d), closes #1910
  • core: improve partial loading of 1:m relations (3ddde1e), closes #2651
  • core: issue delete queries after extra/collection updates (66468da)
  • core: issue early delete queries for recreating unique properties (decfd10), closes #2273
  • core: make entity helper property non-enumerable (3cac0cf)
  • core: propagate em.remove() to 1:m collections (c23c39c), closes #2395
  • core: propagate em.remove() to m:1 properties of 1:m relations (e6fa2f7), closes #2636
  • core: propagate unsetting of 1:1 from inverse side (1e78977), closes #1872
  • core: rehydrate custom types when using metadata cache (3bcb9a5), closes #2489
  • core: reload default values after flush in mysql/sqlite (d57a6a9), closes #2581
  • core: remove entity from its bidirectional relations after delete (7e40b5c), closes #2238
  • core: reset current transaction before running afterFlush event (d98837d), closes #1824
  • core: respect filters defined on base entities (65fec06), closes #1979
  • core: respect read replica options (#2152) (9ec668d), closes #1963
  • core: respect specified schema when populating (select-in) (#2676) (21a1be0)
  • core: rework orphan removal and cascading (#2532) (eb3ea4a)
  • core: save collection snapshots recursively after flush (3f5ba2f), closes #2410 #2411
  • core: schedule orphan removal on 1:1 inverse sides when relation nulled (a904fe8), closes #2273
  • core: support extending in tsconfig.json (#1804) (e1e0adb), closes #1792
  • core: support getters in EntitySchema property types (9858205), closes #1867
  • core: support loading lazy scalar properties via em.populate() (c20fe88), closes #1479
  • core: sync MigrateOptions type in core with migrations package (#2259) (d4b8c2c)
  • core: truly load the whole entity graph when populate: true (3c21663), closes #1134
  • core: use $and for merging of multiple filter conditions (0a0622a), closes #1776
  • core: use clean internal identity map with disableIdentityMap (0677d74), closes #1307
  • core: use tsconfig-paths loadConfig function (#1854) (76e8d1c), closes #1849
  • embeddables: add missing serialization options to @Embedded() (9f91578), closes #2464
  • embeddables: allow using more than 10 embedded arrays (7806667), closes #1912
  • embeddables: ensure order of discovery does not matter for embeddables (b095d9e), closes #2242
  • embeddables: fix validating nullable object embeddables (8ab2941), closes #2233
  • embeddables: order of discovery of embeddables should not matter (d955b29), closes #2149
  • handle file:// urls in normalizePath (#2697) (127b0ae)
  • mongo: do not use separate update queries for M:N collections if not needed (e57984d), closes #2483
  • mongo: fix extraction of child condition when populating (66ab1c6), closes #1891
  • mongo: validate usage of migrator and entity generator (1db1a63), closes #1801
  • postgres: add extra array operators (#2467) (576117e)
  • postgres: fix propagation of PKs with custom names (41380de), closes #1990
  • postgres: support comparing array columns via $eq (6eb320e), closes #2462
  • schema: improve diffing of default values for strings and dates (d4ac638), closes #2385
  • sti: allow m:n relations between two STI entities (6c797e9), closes #2246
  • sti: fix prototype of child entity after it gets loaded (a0827f5), closes #2493 #2364
  • sti: respect custom table names (42a9522), closes #2356
  • ts-morph: fix validation of embedded polymorphic arrays (b6a068a)
  • types: fix populate type hints for nullable properties (bc1bf76), closes #2701
  • validation: validate missing 1:m mappedBy key in factory (e75fcff), closes #2393

chore

  • upgrade typescript to v4.5.2 (2bd8220)

Code Refactoring

  • core: PrimaryKeyType symbol should be defined as optional (db0b399)
  • core: remove @Repository() decorator (17a55b6)
  • core: remove em.find/findOne arguments in favour of options object (7b577ab)
  • core: return Collection instance from LoadedCollection.get()/$ (27cbe69), closes #2394
  • core: use options parameter in em.merge() (aaee27c)
  • core: use options parameters on SchemaGenerator (7e48c5d)
  • enable populateAfterFlush by default (6dc184c), closes #784
  • use options parameters in IDatabaseDriver (#2204) (9a32ac0)

Features

  • cli: allow exporting async functions from CLI config (912728d)
  • cli: improve loading of CLI settings from package.json (03f9ddd), closes #545
  • cli: only warn with useTsNode: true without ts-node available (5aff134), closes #1957
  • core: add em.clearCache(key) method (1ccfad8)
  • core: add EventType.onLoad that fires after entity is fully loaded (14c2fa9)
  • core: add freshEventManager to em.fork() options (a0f3fd0), closes #1741
  • core: add persistOnCreate option and enable it for seeder (f0fec1b), closes #2629
  • core: add populateWhere option (#2660) (16c5e91)
  • core: add QueryFlag.AUTO_JOIN_ONE_TO_ONE_OWNER (be9d9e1), closes #1660
  • core: add Reference.createFromPK() helper method (2217154)
  • core: add callback parameter to Collection.remove() (0b37654), closes #2398
  • core: add custom table check constraint support for postgres (#2688) (89aca5f)
  • core: add index/key name to naming strategy (a842e3e)
  • core: add PlainObject class that DTO's can extend to treat class as POJO (#1837) (645b27a)
  • core: add support for advanced locking (0cbed9c), closes #1786
  • core: add support for concurrency checks (#2437) (acd43fe)
  • core: add support for custom property ordering (#2444) (40ae4d6)
  • core: add support for ESM via gen-esm-wrapper (aa71065), closes #1010
  • core: add support for multiple schemas (including UoW) (#2296) (d64d100), closes #2074
  • core: add support for polymorphic embeddables (#2426) (7b7c3a2), closes #1165
  • core: allow configuring aliasing naming strategy (#2419) (89d63b3)
  • core: allow defining check constraints via callback (965f740), closes #2688 #1711
  • core: allow passing arrays in orderBy parameter (#2211) (0ec22ed), closes #2010
  • core: allow providing custom Logger instance (#2443) (c7a75e0)
  • core: allow using short lived tokens in config (4499838), closes #1818
  • core: automatically infer populate hint based on fields (0097539), closes #2468
  • core: conditionally support folder based discovery of ESM (8c8f0d0), closes #2631
  • core: expose referencedColumnNames on m:1/1:1 decorators (2f5a5e1), closes #593
  • core: implement auto-flush mode (#2491) (f1d8bf1), closes #2359
  • core: implement auto-refreshing of loaded entities (#2263) (9dce38c), closes #2292
  • core: implement partial loading support for joined loading strategy (2bebb5e), closes #1707
  • core: keep collection state of dirty collections after initializing (49ed651), closes #2408
  • core: make em.create() respect required properties (2385f1d)
  • core: make FindOptions.fields strictly typed (dot notation) (fd43099)
  • core: make populate parameter strictly typed with dot notation (3372f02)
  • core: move @UseRequestContext() decorator to core package (253216d)
  • core: rework deep assigning of entities and enable it by default (#1978) (8f455ad)
  • core: support column names with spaces (00b54b4), closes #1617
  • core: use AsyncLocalStorage instead of domain API (be27bf7)
  • core: validate populate hint on runtime for joined strategy too (94877e3), closes #2527
  • core: validate required properties before flushing new entities (9eec3a9), closes #2176
  • core: validate usage of global context (#2381) (f0cbcc2)
  • core: validate version mismatch in ORM packages (cf70219)
  • embeddables: allow using m:1 properties inside embeddables (#1948) (ffca73e)
  • embeddables: support onCreate and onUpdate (288899d), closes #2283 #2391
  • entity-generator: add enum generation support (#2608) (1e0b411)
  • entity-generator: allow specifying schema (beb2993), closes #1301
  • filters: add em parameter to the filter callback parameters (6858986), closes #2214
  • migrations: allow providing custom MigrationGenerator (3cc366b), closes #1913
  • migrations: allow using migrations with ES modules (072f23f), closes #2631
  • migrations: store migrations without extensions (4036716), closes #2239
  • migrations: use snapshots for generating diffs in new migrations (#1815) (9c37f61)
  • mongo: add SchemaGenerator support for mongo (#2658) (cc11859)
  • mongo: upgrade node-mongodb to v4 (#2425) (2e4c135)
  • schema: add support for timestamp columns in mysql (a224ec9), closes #2386
  • schema: allow disabling foreign key constraints (fcdb236), closes #2548
  • schema: rework schema diffing (#1641) (05f15a3), closes #1486 #1518 #579 #1559 #1602 #1480 #1687
  • seeder: add seeder package (#929) (2b86e22), closes #251
  • sql: add callback signature to expr() with alias parameter (48702c7), closes #2405
  • sql: allow setting transaction isolation level (6ae5fbf), closes #819
  • sql: allow tuple comparison via expr helper (90777a7), closes #2399
  • sql: generate down migrations automatically (#2139) (7d78d0c)
  • support flushing via Promise.all() (f788773), closes #2412
  • typings: make em.create() and other methods strict (#1718) (e8b7119), closes #1456
  • typings: make toObject() and similar strict (#1719) (c202396)

Performance Improvements

  • core: define Reference properties on prototype (4ba390d)
  • core: do not redefine Collection properties as non-enumerable (8a604a6)
  • core: do not update entity state on forking EM (de3191c)
  • core: reuse EntityComparator on fork() (#2496) (b2a9b12)
  • core: use shared memory for cycles when computing change sets (ced0fad), closes #2379
  • core: various small performance improvements in UoW (84b5d1b)

BREAKING CHANGES

  • core: Previously the validation took place in the database, so it worked only for SQL drivers. Now we have runtime validation based on the entity metadata. This means mongo users now need to use nullable: true on their optional properties, or disable the validation globally via validateRequired: false in the ORM config.
  • core: Previously when we had nonstandard PK types, we could use PrimaryKeyType symbol to let the type system know it. It was required to define this property as required, now it can be defined as optional too.
  • core: em.create() will now require you to pass all non-optional properties. Some properties might be defined as required for TS but we have a default value for them (either runtime, or database one) - for such we can use OptionalProps symbol to specify which properties should be considered as optional.
  • After flushing a new entity, all relations are marked as populated, just like if the entity was loaded from the db. This aligns the serialized output of e.toJSON() of a loaded entity and just-inserted one.

In v4 this behaviour was disabled by default, so even after the new entity was flushed, the serialized form contained only FKs for its relations. We can opt in to this old behaviour via populateAfterFlush: false.

  • Previously it was possible to call em.populate() with a single entity input, and the output would be again just a single entity.

Due to issues with TS 4.5, this method now always return array of entities. You can use destructing if you want to have a single entity return type:

const [loadedAuthor] = await em.populate(author, ...);
  • core: Embeddable instances are now created via EntityFactory and they respect the forceEntityConstructor configuration. Due to this we need to have EM instance when assigning to embedded properties.

Using em.assign() should be preferred to get around this.

Deep assigning of child entities now works by default based on the presence of PKs in the payload. This behaviour can be disable via updateByPrimaryKey: false in the assign options.

mergeObjects option is now enabled by default.

  • core: Previously with select-in strategy as well as with QueryBuilder, table aliases were always the letter e followed by unique index. In v5, we use the same method as with joined strategy - the letter is inferred from the entity name.

This can be breaking if you used the aliases somewhere, e.g. in custom SQL fragments. We can restore to the old behaviour by implementing custom naming strategy, overriding the aliasName method:

import { AbstractNamingStrategy } from '@mikro-orm/core';

class CustomNamingStrategy extends AbstractNamingStrategy {
aliasName(entityName: string, index: number) {
return 'e' + index;
}
}

Note that in v5 it is possible to use expr() helper to access the alias name dynamically, e.g. expr(alias => `lower('${alias}.name')`), which should be now preferred way instead of hardcoding the aliases.

  • core: Previously those dynamically added getters returned the array copy of collection items. In v5, we return the collection instance, which is also iterable and has a length getter and indexed access support, so it mimics the array. To get the array copy as before, call getItems() as with a regular collection.
  • core: em.getReference() now has options parameter.
  • Most of the methods on IDatabaseDriver interface now have different signature.
  • core: The decorator was problematic as it could only work properly it the file was required soon enough - before the ORM initialization, otherwise the repository would not be registered at all.

Use @Entity({ repository: () => CustomRepository }) in the entity definition instead.

  • core: em.fork() now has an options object parameter instead of the separate boolean params.
  • core: merge() has now the last parameter as options object instead of two separate bool params.
  • core: Populate parameter is now strictly typed and supports only array of strings or a boolean. Object way is no longer supported. To set loading strategy, use FindOptions.strategy.
  • core: Following method signatures changed, options parameter is now the only way to set things like populate, orderBy, etc.
  • em.find()
  • em.findOne()
  • em.findOneOrFail()
  • em.findAndCount()
  • repo.find()
  • repo.findOne()
  • repo.findOneOrFail()
  • repo.findAndCount()
  • repo.findAll()
  • core: SchemaGenerator API changed, boolean parameters are now removed in favour of options objects
interface SchemaGenerator {
generate(): Promise<string>;
createSchema(options?: { wrap?: boolean }): Promise<void>;
ensureDatabase(): Promise<void>;
getCreateSchemaSQL(options?: { wrap?: boolean }): Promise<string>;
dropSchema(options?: { wrap?: boolean; dropMigrationsTable?: boolean; dropDb?: boolean }): Promise<void>;
getDropSchemaSQL(options?: { wrap?: boolean; dropMigrationsTable?: boolean }): Promise<string>;
updateSchema(options?: { wrap?: boolean; safe?: boolean; dropDb?: boolean; dropTables?: boolean }): Promise<void>;
getUpdateSchemaSQL(options?: { wrap?: boolean; safe?: boolean; dropDb?: boolean; dropTables?: boolean }): Promise<string>;
createDatabase(name: string): Promise<void>;
dropDatabase(name: string): Promise<void>;
execute(sql: string, options?: { wrap?: boolean }): Promise<void>;
}
  • sql: - em.transactional() signature has changed, the parameter is now options object
  • em.begin() signature has changed, the parameter is now options object
  • core: Signature of em.populate() changed, it now uses options parameter.
-populate<P>(entities: T, populate: P, where?: FilterQuery<T>, orderBy?: QueryOrderMap,
- refresh?: boolean, validate?: boolean): Promise<Loaded<T, P>>;
+populate<P>(entities: T,populate: P, options?: EntityLoaderOptions<T>): Promise<Loaded<T, P>>;
  • typings: Some methods are now strictly typed, so previously fine usages might be restricted on TS level.
  • typings: Some methods are now strictly typed, so previously fine usages might be restricted on TS level. To get around those, we might either cast as any, provide the generic T type as any, or use expr helper.
em.create(User, { someNotDefinedProp: 123 }); // throws if someNotDefinedProp not on the User
em.create(User, { [expr('someNotDefinedProp')]: 123 }); // works, using expr
em.create<any>(User, { someNotDefinedProp: 123 }); // works, using type cast
em.create(User, { someNotDefinedProp: 123 } as any); // works, using type cast
  • core: Node ">= 12.17.0 || >= 13.10.0" required.

4.5.10 (2021-12-26)

Bug Fixes

  • core: allow putting not managed entities to remove stack (0edb72e), closes #2395
  • core: defer cascading of persist operation (7d18310), closes #2161
  • core: do not override internal EM instance when forking EM (fb0abf9), closes #2342
  • core: do not save entity state in merge when it's not initialized (bdd7452), closes #1927
  • core: fix assigning to object property without value (aca56e1), closes #2492
  • core: fix collection state when forceEntityConstructor is used (53d4c39), closes #2406 #2409
  • core: fix reflection of enums in babel (05dee1d), closes #2198
  • core: fix serialization of self referencing collections (fdbe4f4), closes #2059
  • core: rehydrate custom types when using metadata cache (3ea37a6), closes #2489
  • core: remove entity from its bidirectional relations after delete (c754a62), closes #2238
  • embeddables: add missing serialization options to @Embedded() (aca6d08), closes #2464
  • embeddables: ensure order of discovery does not matter for embeddables (e3f9dbc), closes #2242
  • embeddables: fix validating nullable object embeddables (d60dded), closes #2233
  • mongo: do not use separate update queries for M:N collections if not needed (f6383a0), closes #2483
  • postgres: add extra array operators (#2467) (a1fd357)
  • sti: fix prototype of child entity after it gets loaded (e78942a), closes #2493 #2364
  • sti: respect custom table names (b17aea9), closes #2356
  • validation: validate missing 1:m mappedBy key in factory (7ef40c0), closes #2393

Performance Improvements

  • core: define Reference properties on prototype (4ef2623)
  • core: do not redefine Collection properties as non-enumerable (523addd), closes #2543
  • core: reuse EntityComparator on fork() (#2496) (bd2ccfd)
  • core: use shared memory for cycles when computing change sets (c12ff4b), closes #2379
  • core: various small performance improvements in UoW (d8ea1c2)

4.5.9 (2021-08-24)

Note: Version bump only for package @mikro-orm/core

4.5.8 (2021-08-24)

Bug Fixes

  • core: detect ts-jest usage (d54ccc2)
  • core: do not apply limit/offset to populate pivot table queries (1f2d430), closes #2121
  • core: do not propagate mapToPk properties (c37f42e)

4.5.7 (2021-06-30)

Bug Fixes

  • core: fix clearing 1:m collections (29cd17b), closes #1914
  • core: fix M:N relations with custom type PKs (ed399b1), closes #1930
  • core: fix transaction context in nested transactions (d88dd8b), closes #1910
  • core: make entity helper property non-enumerable (ce99eb2)
  • core: respect filters defined on base entities (4657d05), closes #1979
  • embeddables: allow using more than 10 embedded arrays (ab8e706), closes #1912
  • postgres: fix propagation of PKs with custom names (9ce0c37), closes #1990

Features

  • cli: only warn with useTsNode: true without ts-node available (3aa3a6c), closes #1957

4.5.6 (2021-06-06)

Bug Fixes

  • core: fix extraction of child condition when populating 2 (f22eec1), closes #1882
  • core: fix hydrating of inlined embeddables via em.create() (34391cd), closes #1840
  • core: fix joined strategy with FK as PK (adaa59b), closes #1902
  • core: propagate unsetting of 1:1 from inverse side (903d484), closes #1872
  • core: reset current transaction before running afterFlush event (539311e), closes #1824
  • core: support getters in EntitySchema property types (0b831d0), closes #1867
  • core: use tsconfig-paths loadConfig function (#1854) (fbfb148), closes #1849
  • mongo: fix extraction of child condition when populating (3cf30e1), closes #1891

Features

  • core: add PlainObject class that DTO's can extend to treat class as POJO (#1837) (2e9c361)

4.5.5 (2021-05-17)

Bug Fixes

  • core: allow using updateNestedEntities flag with collections (db77e8b), closes #1717
  • core: convert custom types for onCreate & onUpdate (34c1aa5), closes #1751
  • core: convert custom types for collection items in joined strategy (bea37e0), closes #1754
  • core: convert custom types on PKs in update and delete queries (1b5270d), closes #1798
  • core: ensure correct casting in deep JSON queries with operators (0441967), closes #1734
  • core: fix findAndCount with populate (61bc7cf), closes #1736
  • core: issue delete queries after extra/collection updates (fc48890)
  • core: support extending in tsconfig.json (#1804) (6597552), closes #1792
  • core: use $and for merging of multiple filter conditions (19f3f1d), closes #1776
  • mongo: validate usage of migrator and entity generator (e41d1c5), closes #1801

4.5.4 (2021-04-26)

Bug Fixes

  • core: consider non-plain objects as PKs (82387ad), closes #1721
  • core: fix QueryFlag.PAGINATE with joined loading strategy (11aa0a3)
  • core: fix assigning embedded arrays (9ee8f5c), closes #1699
  • core: fix persisting complex composite keys in m:1 relations (a932366), closes #1687
  • core: fix querying by complex composite keys via entity instance (b1b7894), closes #1695
  • core: fix querying by JSON properties (bc5e1a9), closes #1673
  • core: fix state of entities from result cached (8d0f076), closes #1704

Features

  • core: add QueryFlag.AUTO_JOIN_ONE_TO_ONE_OWNER (378e468), closes #1660

4.5.3 (2021-04-09)

Bug Fixes

  • core: ensure eager loaded relations are actually loaded (897c7bd), closes #1657
  • discovery: fix metadata validation of nested embeddables (1d7c123), closes #1616
  • postgres: improve extra updates logic for batch updates (84b40bc), closes #1664

Features

  • postgres: fix batch inserts with PKs with custom field name (4500ca7), closes #1595

4.5.2 (2021-04-06)

Bug Fixes

  • core: fix mapping of complex composite keys (c0c658e), closes #1624
  • core: support native bigint as primary key (#1626) (bce7afe)

4.5.1 (2021-03-27)

Bug Fixes

  • core: create child entities that use Reference wrapper as new (b14cdcb), closes #1592
  • core: support Collection.loadCount for unidirectional M:N (27e4dd2), closes #1608
  • core: support nested embeddables inside embedded arrays (088c65d), closes #1585
  • core: support sql fragments in custom types with joined strategy (527579d), closes #1594

4.5.0 (2021-03-21)

Bug Fixes

  • core: apply filters when populating M:N relations (cd8330a), closes #1232
  • core: do not process knex.ref() via custom types (ba2ee70), closes #1538
  • core: do not update entity state when cascade merging (6c74109), closes #1523
  • core: expose filters in some repository methods (a1e1553), closes #1236
  • core: support operators in json property queries (cb5e715), closes #1487
  • sqlite: ensure booleans are hydrated as booleans (4e36df2), closes #1553
  • sqlite: fix calling em.find() from hooks (fec3285), closes #1503

Features

  • cli: allow mikro-orm config to return Promise (#1495) (629aae9)
  • core: add Collection.matching() method to allow pagination (#1502) (1ad3448), closes #334
  • core: add close method to CacheAdapter interface (2795b5a), closes #1509
  • core: allow updating nested 1:1 and m:1 references with EntityAssigner (#1535) (c1dd048)
  • core: infer configuration from environment variables (#1498) (1ff07a7), closes #1472
  • core: support custom types in embeddables (53305d3), closes #1519
  • core: support embeddable arrays (#1496) (57b605c), closes #1369
  • reflection: support enum arrays and custom types (dc65527), closes #1497
  • validation: validate correct reference types (381b5b9), closes #1568

4.4.4 (2021-02-21)

Bug Fixes

  • core: allow extending existing custom types (cc34d7e), closes #1442
  • core: do not define dynamic id property if not needed (e13188f), closes #1444

Performance Improvements

  • core: improve processing of 1:m relations (#1450) (f5c1818)

4.4.3 (2021-02-14)

Bug Fixes

  • core: ignore falsy values in Collection.remove() (3447039), closes #1408
  • core: propagate custom join columns to inverse side (m:n) (3f0a7b2), closes #1429
  • core: respect mergeObjects only for POJOs in assign helper (c5bbcee), closes #1406
  • core: use generic comparison for object properties (e9073cf), closes #1395

4.4.2 (2021-02-04)

Features

4.4.1 (2021-02-01)

Bug Fixes

  • core: allow assigning null to embeddable property (#1356) (f3a091e)
  • core: fix eager relations with joined loading strategy (ba94e28), closes #1352
  • sti: respect child types when querying for STI entity (df298a1), closes #1252
  • typing: improve handling of array properties (9d82ffb), closes #1077

4.4.0 (2021-01-24)

Bug Fixes

  • core: em.create() should not mutate the input object (b83b211), closes #1294
  • core: allow using lazy flag with formulas (4b2b5ce), closes #1229
  • core: always make new entity snapshot (1dacf1e), closes #1334
  • core: apply discriminator condition when loading STI entities (9c62370), closes #1252
  • core: clear inverse references to removed entities (3a1d927), closes #1278
  • core: fix creating entity graph from deeply nested structures (833d246), closes #1326
  • core: fix custom types with joined loading strategy (f64e657), closes #1237
  • core: fix nullable embeddables in object mode (bb8dbce), closes #1296
  • core: improve custom sql expression detection (cf8c5cd), closes #1261
  • core: make PK property of Reference required (5e1cf23)
  • core: respect context when working with filter params (97ed314), closes #1312
  • core: support FK as PK in Collection.getIdentifiers() (#1225) (f8024c9), closes #1224

Features

  • core: add support for nested embedddables (#1311) (aee2abd), closes #1017
  • core: add support for nested partial loading (#1306) (3878e6b), closes #221
  • core: allow disabling identity map and change set tracking (#1307) (03da184), closes #1267
  • core: allow using native private properties (fc35c22), closes #1226
  • core: implement transaction lifecycle hooks (#1213) (0f81ff1), closes #1175
  • core: support handling Set as array-like input (#1277) (2945b8c)
  • mysql: allow specifying collation globally (cd95572), closes #1012

Performance Improvements

  • core: make IdentityMap iterable (e13757a)

4.3.4 (2020-12-11)

Bug Fixes

  • core: hydrate embeddable scalar properties (#1192) (eb73093)
  • core: validate overridden properties by embeddables (#1172) (6629a08), closes #1169
  • sql: ensure correct order of results when fetch joining (7453816), closes #1171

Features

  • core: auto-discover base entities (33bda07)

4.3.3 (2020-12-04)

Bug Fixes

  • core: fix em.create() with nested relations (dde119f), closes #1150
  • core: fix populating 1:m where the owner uses mapToPk (85a7c9d), closes #1128
  • core: fix propagating of changes to 1:m with mapToPk (b38df3e), closes #1128
  • core: fix snapshotting of composite properties (b5f19f2), closes #1079
  • schema: allow using const enums (e02ffea), closes #1096
  • sqlite: fix querying by 1:1 relation with composite PK (0da6347), closes #1157

4.3.2 (2020-11-24)

Bug Fixes

  • core: disable propagation when mapToPk is used (6f6a204), closes #1124
  • core: do not use custom toJSON when storing result cache (86ec3b3)
  • core: fix comparison of object properties and bigints (2119a65), closes #1117
  • core: fix computing changesets with reference as PK (5504436), closes #1111
  • core: fix serialization of properties with same name (d4d9c48), closes #1115
  • sql: allow using raw value for JSON prop with custom type (2a17c59), closes #1112

4.3.1 (2020-11-20)

Bug Fixes

  • core: assign embedded properties from class objects (#1087) (c2b4972), closes #1083
  • core: rework unique property extra updates (bd19d03), closes #1025 #1084
  • ts-morph: fix discovery of IdentifiedReference with ts-morph (d94bd91), closes #1088

4.3.0 (2020-11-13)

Bug Fixes

  • core: always check remove stack when cascade persisting (a9a1bee), closes #1003
  • core: do not override child class properties (#1000) (6d91f1f)
  • core: ensure correct grouping and commit order for STI (8b77525), closes #845
  • core: ensure correct handling of empty arrays (c9afabb)
  • core: ensure correct handling of empty arrays (1c4ba75)
  • core: ensure we store the right value for bigint PKs (7d7a1c9), closes #1038
  • core: fix cascading when assigning collections (d40fcfa), closes #1048
  • core: pin dependencies (0f3a8e5), closes #961
  • discovery: allow using absolute paths in entities (584854c), closes #1073
  • schema: pass entity name to joinKeyColumnName() (fe4b7bd), closes #1026
  • sql: convert custom types at query builder level (83d3ab2)
  • sql: do not batch update unique properties (87b722a), closes #1025
  • sql: inline array parameters when formatting queries (a21735f), closes #1021
  • sql: take snapshots of collections populated via joined strategy (5f3288a), closes #1041
  • validation: don't validate inherited STI props (#998) (63d1f57), closes #997

Features

  • core: allow calling Collection.set() on not initialized collections (1d0bb85), closes #1048
  • core: allow extending embeddables (#1051) (89d3250), closes #1049
  • core: allow mapping null to undefined optionally (55de84e), closes #1019
  • core: allow using multiple ORM instances with RequestContext (e11040d), closes #872
  • core: maintain transaction context automatically (#959) (e0064e4)
  • count: initial implementation of loadCount (#955) (3371415), closes #949
  • query-builder: allow mapping of complex joined results (#988) (60dd2d8), closes #932

4.2.3 (2020-10-24)

Bug Fixes

  • core: ensure global filters are enabled by default (#952) (28124fb)
  • core: rework access to target entity metadata from collections (10ca335), closes #956

4.2.2 (2020-10-22)

Bug Fixes

  • core: fix mapping of params with custom types (e5049b1), closes #940
  • core: fix wrongly inferred 1:m metadata (82f7f0a), closes #936

Features

  • core: add MetadataStorage.clear() to clear the global storage (c6fa0f4), closes #936

4.2.1 (2020-10-20)

Bug Fixes

  • core: make sure refreshing of loaded entities works (45f3f42)
  • core: validate object embeddable values on flush (cd38e17), closes #466
  • core: validate the object passed to em.persist() (90678c2)

4.2.0 (2020-10-18)

Bug Fixes

  • core: fix propagation of conditions with operators (05acd34)
  • core: reset the working state of UoW after failures (6423cf7)
  • core: update umzug types to 2.3 (4668e78), closes #926
  • core: use entity ctors also when all PKs are provided in em.create() (b45b60b), closes #924
  • schema: fix automatic discriminator map values in STI (7cd3c6f), closes #923

Features

  • core: add basic (in-memory) result caching (2f8253d)
  • core: add native support for enum arrays (9053450), closes #476
  • core: allow defining multiple entities in single file (e3ab336), closes #922
  • core: allow mapping m:1/1:1 relations to PK (#921) (894f17e), closes #750
  • core: allow storing embeddables as objects (#927) (ba881e6), closes #906
  • serialization: rework handling of cycles (1a2d026)

4.1.0 (2020-10-12)

Bug Fixes

  • core: allow defining PKs inside @BeforeCreate() (0a2299f), closes #893 #892
  • core: do not cascade remove FK primary keys (37415ce), closes #915
  • core: do not fire onInit event twice (9485f48), closes #900
  • core: ensure custom types are comparable (3714a51), closes #864
  • core: fix detection of custom type PKs with object value (61095ce), closes #910
  • core: fix mapping of returning zero values in embeddables (e42ae4a), closes #905
  • core: skip index initialization for abstract entities (#881) (a2d381f)
  • mongo: filter by serialized PK inside group condition (a492a64), closes #908
  • schema: make STI metadata discovery order independent (f477a48), closes #909
  • sqlite: rework schema support for composite keys in sqlite (82e2efd), closes #887
  • typings: improve inference of the entity type (67f8015), closes #876

Features

  • core: add EntityRepository.merge() method (f459334), closes #868

Performance Improvements

  • core: implement bulk updates in sql drivers (b005353), closes #732
  • core: improve hydration performance (3cafbf3), closes #732
  • core: interpolate query parameters at ORM level (742b813), closes #732
  • core: optimize entity hydration (6c56a05), closes #732
  • core: use batching in uow deletes (8cbb22a), closes #732
  • core: use bulk inserts in all drivers (10f2e55), closes #732
  • core: use dedicated identity maps for each entity (84667f9), closes #732
  • core: use faster way to check number of object keys (82f3ee4), closes #732
  • core: use JIT compilation for diffing entities (60f10a4), closes #732
  • core: use JIT compilation for snapshotting entities (5612759), closes #732
  • core: use JIT compilation in hydrator (1f06a52), closes #732
  • core: use JIT compiled PK getters/serializers (0ec99dc), closes #732

4.0.7 (2020-09-24)

Bug Fixes

  • core: do not store original data for references (0a9ef65), closes #864

Features

  • core: add groupBy, having and schema to CountOptions (d3c3858)

Performance Improvements

  • core: use batch inserts in UoW (postgres & mongodb) (#865) (54ad928), closes #732

4.0.6 (2020-09-22)

Bug Fixes

  • deps: update dependency escaya to ^0.0.49 (#854) (d4737b6)
  • query-builder: wrap nested array conditions with $in operator (939989a), closes #860

4.0.5 (2020-09-21)

Bug Fixes

  • core: fix merging results from QB to existing entity (218098a)
  • schema: defer creating of composite indexes + implement diffing (f57b457), closes #850

Features

  • mapping: make @Unique and @Index (optionally) typesafe (afe6801), closes #850

4.0.4 (2020-09-19)

Bug Fixes

  • core: allow filter condition callbacks without arguments (5b3401f), closes #847
  • core: allow filter condition callbacks without arguments (da8fbfc), closes #847
  • core: allow querying ArrayType with a value (e505358), closes #844
  • core: improve metadata validation of STI relations (0b97af8), closes #845
  • core: update filter typing to allow async condition (#848) (2188f62)
  • deps: update dependency escaya to ^0.0.44 (#839) (fedb41c)
  • deps: update dependency escaya to ^0.0.45 (#842) (d9f9f05)
  • query-builder: fix mapping of nested 1:1 properties (9799e70)

Features

  • core: allow setting loading strategy globally (e4378ee), closes #834

Performance Improvements

  • move reference to metadata to entity prototype + more improvements (#843) (f71e4c2), closes #732

Reverts

  • Revert "refactor: return target from decorator definition" (e021617)

4.0.3 (2020-09-15)

Bug Fixes

  • core: make a copy of custom type values to allow array diffing (6ae72ae)

Features

  • core: allow using AsyncLocalStorage for request context (47cd9a5), closes #575

Performance Improvements

  • core: create the helper instance early (f4f90eb)
  • core: do not generate internal entity uuid (9f46aa4)
  • core: do not use em.merge() internally (6a1a6d6)
  • core: remove WrappedEntity.__internal map (2228fcb)
  • core: skip processing of hooks when there are no hooks (425784b)
  • core: store entity identifier on entity helper (403acca)
  • core: store original entity data on entity helper (6a91b01)

4.0.2 (2020-09-11)

Bug Fixes

  • core: simplify Collection type args (1fb6cec)

4.0.1 (2020-09-10)

Bug Fixes

  • core: hydrate user defined discriminator columns (#831) (8671440), closes #827
  • core: refactor internals to reduce number of cycles (#830) (3994767)