Changelog
All notable changes to this project will be documented in this file. See Conventional Commits for commit guidelines.
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 fromem.upsert
(e342449), closes #4382 - core: re-export
Reference
class asRef
(50eea37), closes #4161 - core: respect
skipNull
when serializing object properties/embeddables (f27ee9a), closes #4383
Features
- core: add
meta
toEventArgs
to the upsert events (ed431ea)
Performance Improvements
5.7.9 (2023-05-22)
Bug Fixes
Performance Improvements
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 withisolatedModules
(8b23674), closes #4350
Features
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
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
andIdentifiedReference
(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
Features
- core: add
beforeUpsert
andafterUpsert
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 oncolumnType
(#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 fromEntityRepository
(#4259) (eba4563), closes #3989 - core: validate repository type in
repo.populate()
andrepo.assign()
(301bdf8), closes #3989 - core: validate unique
tableName
(0693029), closes #4149 - migrations: add support for custom migration names (#4250) (fb2879e)
Performance Improvements
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
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
{}
withObject.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
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
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
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
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 fromPopulate
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 ofFilterQuery
(2a2a13d), closes #3836 - core: return
Ref & LoadedReference
fromref()
(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
- core: add
em.upsertMany
(#3825) (83ac12a) - core: add
serialize()
helper for explicit serialization (#3728) (f22cd6f) - core: allow creating entity from PK via
rel()
andref()
(#3837) (72ca8e7), closes #3835 - core: ensure database exists automatically (#3830) (f92da01)
- core: introduce ORM extensions (#3773) (0f36967)
Performance Improvements
5.5.3 (2022-11-10)
Bug Fixes
Performance Improvements
- core: redefine the internal
__helper
getter with a static value (77d0549)
5.5.2 (2022-11-07)
Bug Fixes
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 forwrappedReference
relation property option (249a407) - core: add
Rel<T>
andRef<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
andOptions
exports to each driver package (#3499) (b68ed47) - core: add the
offset
intoFindOneOptions
(#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
andprop
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 fromfields
(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
?
intoFullTextType
properties (5095ddb), closes #3457 - reflection: fix inference of nullability (5f57ee1), closes #3447
Features
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 withPromise.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 toMikroORM
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
inTransactionContext
(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 tois not null
(112f2be), closes #3295 - core: add
disableContextResolution
option toem.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
,onUpdateIntegrity
andonDelete
(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 inem.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
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 asnull
(1c56e7a), closes #3258 - sql: fix prefixing of JSON queries nested on relations (847ff46), closes #3242
Features
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
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
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
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 haslength
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 forem.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
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
onDelete: 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
andCollection.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
inLoaded
type (72385b3), closes #2750 - core: return entity type from
em.create()
instead ofNew<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 fromLoadedCollection.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
toem.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 onfields
(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 tocore
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 ofdomain
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
andonUpdate
(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 viavalidateRequired: 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 useOptionalProps
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 theforceEntityConstructor
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, callgetItems()
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({ customRepository: () => 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 genericT
type asany
, or useexpr
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
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
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
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
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
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
- core: allow querying by JSON properties (#1384) (69c2493), closes #1359 #1261
- core: allow using SQL expressions with custom types (#1389) (83fe6ea), closes #735
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
toundefined
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
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
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
Features
- core: add groupBy, having and schema to
CountOptions
(d3c3858)
Performance Improvements
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
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
Performance Improvements
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
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)