# What changed in typeorm

> 34 changes in typeorm 0.3 to 1 from its official release notes, upgrade guides and advisories: 3 breaking, 2 security, 3 new APIs and options. Each one cited. Sources checked 2026-10-21. HTML: https://unstale.sh/npm/typeorm/

To see which of these apply to a repository, run `npx @unstale/cli init` in it.

## typeorm 1

### Breaking changes

- The inverse foreign key defaults to CASCADE. (1.1.1) — [release notes](https://github.com/typeorm/typeorm/releases/tag/1.1.1)
- Invalid where values now default to throwing on the write path. (1.1.0) — [release notes](https://github.com/typeorm/typeorm/releases/tag/1.1.0)
- Rejects empty where criteria for update and delete operations. (1.1.0) — [release notes](https://github.com/typeorm/typeorm/releases/tag/1.1.0)

### Security

- TypeORM: migration:generate template-literal code injection (0.3.31, 1.1.0) — [security advisory](https://github.com/advisories/GHSA-2RP8-MM9Q-FP49)

### New APIs and options

- DateUtils is exported from the package entry point. (1.1.1) — [release notes](https://github.com/typeorm/typeorm/releases/tag/1.1.1)
- RelationMetadata is exported for package consumers. (1.1.1) — [release notes](https://github.com/typeorm/typeorm/releases/tag/1.1.1)
- Adds support for distinct count. (1.1.0) — [release notes](https://github.com/typeorm/typeorm/releases/tag/1.1.0)

### Performance

- sqljs measures query execution time after the statement runs. (1.1.1) — [release notes](https://github.com/typeorm/typeorm/releases/tag/1.1.1)
- Avoids quadratic grouping when raw results are selected without primary keys. (1.1.1) — [release notes](https://github.com/typeorm/typeorm/releases/tag/1.1.1)

### Fixes and other changes

- Reads closure-table primary values through column metadata. (1.1.2) — [release notes](https://github.com/typeorm/typeorm/releases/tag/1.1.2)
- Releases all query runners before closing the pool. (1.1.2) — [release notes](https://github.com/typeorm/typeorm/releases/tag/1.1.2)
- Prevents composite primary key collisions during hydration. (1.1.2) — [release notes](https://github.com/typeorm/typeorm/releases/tag/1.1.2)
- Prevents connection leaks during initialization. (1.1.2) — [release notes](https://github.com/typeorm/typeorm/releases/tag/1.1.2)
- Handles schema and table names correctly in generated columns in the metadata table. (1.1.2) — [release notes](https://github.com/typeorm/typeorm/releases/tag/1.1.2)
- Compares spatial columns against their default feature type and SRID for Postgres and CockroachDB. (1.1.2) — [release notes](https://github.com/typeorm/typeorm/releases/tag/1.1.2)
- Keeps the STI discriminator index on entities with embeddeds. (1.1.2) — [release notes](https://github.com/typeorm/typeorm/releases/tag/1.1.2)
- Child joins are nested only when outer join semantics require it. (1.1.1) — [release notes](https://github.com/typeorm/typeorm/releases/tag/1.1.1)
- Postgres reads coord_dimension when loading spatial columns. (1.1.1) — [release notes](https://github.com/typeorm/typeorm/releases/tag/1.1.1)
- Returns undefined when the requested path is missing. (1.1.1) — [release notes](https://github.com/typeorm/typeorm/releases/tag/1.1.1)
- Function defaults are evaluated before enum or string normalization. (1.1.1) — [release notes](https://github.com/typeorm/typeorm/releases/tag/1.1.1)
- Metadata access is guarded for raw-table upserts. (1.1.1) — [release notes](https://github.com/typeorm/typeorm/releases/tag/1.1.1)
- Relation values for join columns inside embedded entities are resolved correctly. (1.1.1) — [release notes](https://github.com/typeorm/typeorm/releases/tag/1.1.1)
- Junction rows are kept when the relation is not loaded. (1.1.1) — [release notes](https://github.com/typeorm/typeorm/releases/tag/1.1.1)
- better-sqlite3 awaits query event subscribers and reports failed queries. (1.1.1) — [release notes](https://github.com/typeorm/typeorm/releases/tag/1.1.1)
- Query runners created by clear and getFromCache are released. (1.1.1) — [release notes](https://github.com/typeorm/typeorm/releases/tag/1.1.1)
- Versions of unequal length are compared correctly. (1.1.1) — [release notes](https://github.com/typeorm/typeorm/releases/tag/1.1.1)
- Fixes normalization of FindOptionsWhere criteria containing arrays and Buffers. (1.1.0) — [release notes](https://github.com/typeorm/typeorm/releases/tag/1.1.0)
- Validates where criteria in increment and decrement operations. (1.1.0) — [release notes](https://github.com/typeorm/typeorm/releases/tag/1.1.0)
- Correctly wraps inner joins nested under left joins. (1.1.0) — [release notes](https://github.com/typeorm/typeorm/releases/tag/1.1.0)
- Fixes multiple problems with recursive common table expressions. (1.1.0) — [release notes](https://github.com/typeorm/typeorm/releases/tag/1.1.0)
- Columns marked select false are preserved on the in-memory entity after save(). (1.1.0) — [release notes](https://github.com/typeorm/typeorm/releases/tag/1.1.0)
- Releases the query runner when an error occurs while storing a query result in the cache. (1.1.0) — [release notes](https://github.com/typeorm/typeorm/releases/tag/1.1.0)
- Improves normalizeDatetimeFunction handling for the PostgreSQL tstzrange data type. (1.1.0) — [release notes](https://github.com/typeorm/typeorm/releases/tag/1.1.0)

## typeorm 0.3

### Security

- TypeORM: SQL Injection in UpdateQueryBuilder/SoftDeleteQueryBuilder orderBy (MySQL/MariaDB) (0.3.29) — [security advisory](https://github.com/advisories/GHSA-9GGV-8W38-R7PM)
