4.0.0 (2020-09-08)
Bug Fixes
- cli: custom tsconfig gets wrong path (#597) (3cdb5dd)
- core: add
RequestContext.createAsync()
for Koa (ae3bc0f), closes #709 - core: allow date to be used as primary key (#609) (d421be8)
- core: allow having same property name as entity name (6b9d4cd), closes #655
- core: allow hiding PKs in
toObject()
(0a920dd), closes #644 - core: allow populating FK as PK in
toJSON()
(e05d780) - core: do not cascade merge new entities (2b0f208)
- core: do not lookup in identity map with non-PK conditions (4fb0e52), closes #625
- core: do not merge entity instances in
em.create()
(50aaef8) - core: fix
em.create()
with deeply nested data (#683) (a302473), closes #678 - core: fix default value for
cache.enabled
(9be725f) - core: fix extracting PK out of reference wrapper (db037dc), closes #589
- core: map values from returning clause via hydrator (c5384b4), closes #725
- core: mark all properties as populated for new entities (5f7fb8f), closes #784
- core: reset collections when assigning to those not initialized (e19a6b4)
- core: support comments in tsconfig.json (6506695), closes #730
- core: support nullable bigints (3bb2a2d), closes #631
- core: support self referencing with Reference wrapper (fd1e158), closes #610
- core: throw when trying to call
em.remove(..., null)
(77c52dd) - mapping: support mixed M:N with composite PK on one side only (a951918)
- mariadb: enable
bigNumberStrings
toggle (ee90c64), closes #578 - mongo: add support for
$re
operator in mongo (13fe6e5), closes #613 - postgres: time column type should be a string (#774) (237ddbf)
- query-builder: make sure
$or
and $and
combined works correctly (c8d3a34), closes #792 - query-builder: make sure we use the right alias in complex
$and
queries (522787e), closes #786 - query-builder: use correct operators in complex and/or conditions (#803) (aca0e10)
- schema: do not create indexes for each composite PK (91b38cb), closes #760
- postgres: keep
bigint
/numeric
types as string (014f3b5), closes #324 - sql: pivot joining of m:n when no target entity needed directly (2b0bb72), closes #549
- sql: pivot joining of m:n when target entity is null (3b05a59), closes #548
- sql: rework implicit m:n pivot joining (7928c50)
- sql: support composite keys in
EntityCaseNamingStrategy
(8d07727) - sql: use composite FKs instead in schema generator (f5c2302)
- utils: ts-node check now runs in a webpack environment (#657) (4384019)
Features
- core: add
driver.nativeInsertMany()
method (#688) (78b2341), closes #442 - core: add
em.begin/commit/rollback
methods (#717) (5414c52) - core: add
EntityRepositoryType
symbol (#698) (ffae0a8), closes #696 - core: add
expr
helper to allow custom expressions in EM API (39ced1b), closes #802 - core: add property serializers (3d94b93), closes #809
- core: add support for entity and property comment (#668) (c01b338)
- core: add support for filters/scopes (#663) (c1025b9), closes #385
- core: add support for flush events (#642) (1f12aff), closes #637
- core: add support for ordering by NULLS (#677) (74ee0cb), closes #675
- core: allow persisting 1:m collections (#686) (379b289), closes #467
- core: allow using
knex.raw
in query params (e6b9f0e), closes #802 - core: allow using destructing assignments in entity ctors (06a5490), closes #781
- core: execute hooks via
EventManager
(#623) (6a7f627), closes #622 - core: expose populate parameter in
wrap(e).init()
(d33432a), closes #814 - core: readonly entity (#738) (7581592)
- core: refactor internal dependencies to support Yarn PnP (#645) (7e21bb8)
- core: refactor merging to allow querying by custom type (#800) (bfbc5f8), closes #739
- core: support globs in
entities
(#618) (ee81b61), closes #605 - core: type safe references (#691) (77d64ba), closes #214
- core: use custom errors for failHandler and metadata (6db22af), closes #611
- migrations: add
Migration.execute()
method (5c1f60a), closes #770 - migrations: add support for initial migrations (#818) (26b2228), closes #772
- migrations: allow specifying list of migrations (#741) (5a0f2a6), closes #705
- migrations: allow using knex in migrations (fc2fbaa), closes #799
- postgres: add
$ilike
, $overlap
, $contains
, $contained
(3c59885), closes #641 - query-builder: allow ordering by custom expressions (e4674c7), closes #707
- query-builder: make sure we do not prefix virtual props (fd0766c), closes #734
- cli: allow the use of TS path mapping (#554) (2444192)
- core: accept references in collection
add/remove/set
methods (26d132f) - core: add
connect: boolean
param to MikroORM.init()
(43a9ce9) - core: add
having
to FindOptions
(952fd2f) - core: add custom types for array, blob and json (#559) (7703cc5), closes #476
- core: add pagination support (
QueryFlag.PAGINATE
) (#544) (d43241e) - core: add support for alternative loading strategies (#556) (0b89d4a), closes #440
- core: add support for event subscribers (#614) (1281356), closes #516
- core: add support for lazy scalar properties (#585) (cd8c683), closes #427
- core: add support for Node.js 14 (#522) (2093af8)
- core: add support for single table inheritance (#503) (8c45339), closes #33
- core: allow adding items to not initialized collections (#489) (8be8a4d)
- core: allow adding items to not initialized collections (#489) (ca5eb64)
- core: do not cache metadata for other than ts-morph provider (#569) (49fb4eb)
- core: pass entity as parameter in
onCreate
and onUpdate
(#564) (3044a19) - core: split project into multiple packages (#475) (636e861)
- core: use custom exceptions for driver related errors (#539) (2c30679)
- discovery: use both entity name and path as key in Metadat… (#488) (72f0aca)
- mapping: add support for embeddables (#514) (0fa06b1)
- migrations: support custom migration names (8ea71b6), closes #449
- mongo: add
getCollection()
method to MongoEntityManager
(79a9a7d) - mongo: allow creating any kind of index in mongo (8fbe48a)
- mongo: allow using different primary key types than ObjectId (#568) (e523794), closes #349
- postgres: use
jsonb
column type by default (b6c0578) - sql: add
execute()
method to SqlEntityManager
(e389d40) - sql: add
groupBy
to FindOptions
(2f6687a) - sql: add
qb.raw()
to allow using raw snippets in QB (c09a5b6), closes #598 - sql: add support for computed properties via
@Formula()
(#553) (68b9336) - sql: add support for sub-queries (#525) (e07f8ad)
- sql: allow delete queries with auto-joining via sub-queries (#538) (e44bc56), closes #492
- sql: allow update queries with auto-joining via sub-queries (#537) (cff9a3a), closes #319
- sql: ensure correct table order in schema generator (#617) (b3949cf)
- sql: initialize query builder in select mode (#565) (3e3abe7)
- ts-morph: add ORM version to cache invalidation logic (f28119a)
- ts-morph: infer nullability from property types (4c45e00)
- ts-morph: use
.d.ts
files for ts-morph discovery (#616) (54ce064)
Performance Improvements
- cli: transpile only when using ts-node in CLI (f739f39)
- core: do not generate sql when logging disabled (f232bb3), closes #732
- core: implement bulk deletes (#757) (d83f648), closes #732
- core: improve performance of QB a bit (efc044f), closes #732
- core: improve speed of inserting new items (bfeb2e3), closes #732
- core: optimize QB for simple cases (99cfca7), closes #732
- core: reduce usage of
wrap
helper internally (66ffc3b), closes #732 - core: simplify
MetadataStorage.find()
method (9abbe03), closes #732 - core: use actual Map for identity maps (3645a20), closes #732
- core: use
Set
instead of array for cycle lookups (dff0c9d), closes #732 - core: use
Set
instead of array for stacks in UoW (12ba811), closes #732
BREAKING CHANGES
Please see the upgrading guide.