2.19.6 - 27 June 2026

    Total issues resolved: 0
    Total pull requests resolved: 20
    Total contributors: 12

Bugfixes

    11506: [2.19.x] Fetching entities with Composite Key Relations and null values thanks to @michalbundyra
    11501: Fix OneToManyPersister::deleteEntityCollection missing discriminator column/value. (GH-11500) thanks to @gitbugr
    11489: Replace assertion with exception thanks to @greg0ire
    11475: Fix cloning entities thanks to @nicolas-grekas
    11445: Consider usage of setFetchMode when checking for simultaneous usage of fetch-mode EAGER and WITH condition thanks to @aprat84
    11194: Skip joined entity creation for empty relation (#10889) thanks to @noemi-salaun

Static Analysis

    11513: Address doctrine/persistence 3.3.3 release thanks to @greg0ire
    11467: Psalm 5.24.0 thanks to @derrabus
    11466: PHPStan 1.11.1 thanks to @derrabus

Documentation

    11526: doc: Use modern array syntax in getting started thanks to @GromNaN
    11493: fix(docs): use string value in addAttribute thanks to @SamMousa
    11460: docs: update EntityManager#transactional to EntityManager#wrapInTransaction thanks to @IndraGunawan

Improvement

    11509: Remove unneeded CS rule thanks to @greg0ire

CI

    11490: ci: maintained and stable mariadb version (lts) thanks to @grooverdan
    11484: Use ramsey/composer-install in PHPBench workflow thanks to @greg0ire
    11442: Bump ramsey/composer-install from 2 to 3 thanks to @dependabot[bot]
    11441: Bump doctrine/.github from 3.0.0 to 5.0.1 thanks to @dependabot[bot]
    11440: Upgrade codecov/codecov-action thanks to @greg0ire

Test Suite

    11465: Test with actual lock modes thanks to @derrabus
    11463: Backport test for Query::setLockMode() thanks to @derrabus

2.19.5 - 30 April 2024

    Total issues resolved: 0
    Total pull requests resolved: 6
    Total contributors: 6

Bugfixes

    11430: Fix deprecation layer of Doctrine\ORM\ORMException thanks to @W0rma
    11428: Prevent creation of new MANAGED entity instance by reloading REMOVED entity from database thanks to @xificurk
    11422: Bugfix: respect orderBy for fetch EAGER mode thanks to @tomasz-ryba
    11101: fix: always cleanup in AbstractHydrator::toIterable() thanks to @simPod

Test Suite

    11429: Remove unused test group thanks to @SenseException

Documentation

    11420: fix(docs): typo thanks to @tyteen4a03

2.19.4 - 16 April 2024

    Total issues resolved: 0
    Total pull requests resolved: 4
    Total contributors: 4

Bug

    11414: Fix BIGINT validation thanks to @derrabus

Static Analysis

    11407: Fix templated phpdoc return type thanks to @VincentLanglet
    11389: Fix psalm errors: remove override of template type thanks to @tantegerda1

Documentation

    11372: [Documentation] Query Result Formats thanks to @ThomasLandauer

2.19.3 - 22 March 2024

    Total issues resolved: 0
    Total pull requests resolved: 5
    Total contributors: 3

Test Suite

    11393: Set column length explicitly thanks to @derrabus
    11391: Remove unused variable thanks to @derrabus

Documentation

    11384: [Documentation] Removing "Doctrine Mapping Types" ... thanks to @ThomasLandauer

Bug

    11380: [GH-11185] Bugfix: do not use collection batch loading for indexBy association thanks to @beberlei

Improvement

    11376: Improve lazy ghost performance by avoiding self-referencing closure thanks to @beberlei and @nicolas-grekas

2.19.2 - 18 March 2024

    Total issues resolved: 0
    Total pull requests resolved: 3
    Total contributors: 3

Bugfix

    11289: Do not use batch loading for collections with composite identifier thanks to @themasch

Improvement

    11373: Minor code style fix in AbstractRemoteControl thanks to @kaznovac
    11362: Remove outdated git metadata files thanks to @greg0ire

2.19.1 - 16 March 2024

    Total issues resolved: 0
    Total pull requests resolved: 2
    Total contributors: 2

Bugfix

    11090: [2.17.x] Failed getting entity with fetch eager property thanks to @dbannik

Documentation

    11347: Remove guides-specific markup thanks to @greg0ire

2.19.0 - 3 March 2024

    Total issues resolved: 0
    Total pull requests resolved: 5
    Total contributors: 4

Documentation

    11335: Prepare releases 2.19 and 3.1 thanks to @derrabus

Improvement

    11332: Refator array_map into simple loop for performance thanks to @beberlei
    11234: Remove references to deprecated constants from Lexer thanks to @derrabus
    11228: Add TokenType class thanks to @connorhu

Deprecation

    11309: Deprecate invalid method call thanks to @greg0ire

2.18.3 - 3 March 2024

    Total issues resolved: 0
    Total pull requests resolved: 2
    Total contributors: 2

CI

    11336: Bump CI workflows thanks to @derrabus

Bug

    11314: Fix SchemaTool::getSchemaFromMetadata() uniqueConstraint without a predefined name thanks to @rmotaln

2.18.2 1 March 2024

    Total issues resolved: 0
    Total pull requests resolved: 4
    Total contributors: 2

Static Analysis

    11326: Psalm 5.22.2 thanks to @derrabus
    11320: PHPStan 1.10.59 thanks to @derrabus
    11298: Fix sqlWalker::walkSimpleArithmeticExpression phpdoc thanks to @VincentLanglet

Bug

    11315: Address deprecations from Collection 2.2 thanks to @derrabus

2.18.1 - 22 February 2024

    Total issues resolved: 0
    Total pull requests resolved: 9
    Total contributors: 4

Test Suite

    11288: Backport QueryParameterTest thanks to @derrabus

CI

    11281: Fix StaticAnalysis folder reference thanks to @connorhu

Bug

    11270: Treat '0' as a legitimate trim char thanks to @greg0ire
    11200: Ignore subclasses without discriminatorValue when generating discriminator column condition SQL thanks to @DemoniacDeath

Documentation

    11269: docs: recommend safer way to disable logging thanks to @greg0ire
    11266: More valid docs thanks to @greg0ire
    11252: Make docs valid according to guides 0.3.3 thanks to @greg0ire
    11220: Point link to correct upgrade guide thanks to @greg0ire
    11207: Update branches in README thanks to @derrabus

2.18.0 - 3 February 2024

    Total issues resolved: 0
    Total pull requests resolved: 5
    Total contributors: 1

Improvement

    11195: Use a more specific type for getSqlStatements() thanks to @greg0ire
    11180: Allow doctrine/lexer 3 thanks to @greg0ire
    11148: Flatten directory tree on 2.18 thanks to @greg0ire
    11183: Remove remaining submodules thanks to @greg0ire

CI

    11181: Look for lib remnants in hidden files thanks to @greg0ire

2.17.5 - 3 February 2024

    Total issues resolved: 0
    Total pull requests resolved: 3
    Total contributors: 3

Improvement

    11198: Fix calls to removed lock methods (#11061) thanks to @jwage

Test Suite

    11197: Cover limit/offset values in LimitSubqueryOutputWalkerTest thanks to @mpdude
    11191: Ignore deprecations handled in next major thanks to @greg0ire

2.17.4 - 28 January 2024

    Total issues resolved: 0
    Total pull requests resolved: 7
    Total contributors: 5

Undeprecation

    11187: Remove XML validation disabling deprecation. thanks to @jwage

Improvement

    11176: Throw exception when trying to use non-backed enum types thanks to @thePanz

Documentation

    11186: Update branches in README thanks to @derrabus
    11179: Modernize code in documentation thanks to @greg0ire
    11178: Remove references to JIRA thanks to @greg0ire

Test Suite

    11171: Make Doctrine\Tests\ORM\Internal\Node autoloadable thanks to @greg0ire
    11167: Use foreach on iterable to prevent table locks during tests thanks to @bobvandevijver

2.17.3 - 17 January 2024

    Total issues resolved: 0
    Total pull requests resolved: 8
    Total contributors: 3

Improvement

    11086: Avoid an inconsistency in topological sort result order thanks to @mpdude

Bugfixes

    11162: Remove redundant tags thanks to @greg0ire
    11135: Keep the declared mapping information when using attribute overrides thanks to @mpdude
    11082: Do not defer eager collection loading when in iteration context thanks to @bobvandevijver
    11050: Fix @SequenceGeneratorDefinition inheritance, take 1 thanks to @mpdude

Test Suite

    11142: Remove inheritance thanks to @greg0ire

Documentation

    11146: Mention that postRemove may still see removed entities in in-memory collections thanks to @mpdude
    11134: Mention in the limitations that private field names cannot be reused thanks to @mpdude

2.17.2 - 20 December 2023

    Total issues resolved: 0
    Total pull requests resolved: 8
    Total contributors: 7

Improvement

    11130: Allow to skip property type validation thanks to @derrabus
    11115: Fix: Typo thanks to @localheinz

Bug

    11122: Fix enum mapping validation thanks to @yceruto
    11076: Fix JSON mapping linting against subset of builtin types thanks to @norkunas
    10948: Add compatibility with the Symfony 4.4 VarExporter thanks to @cmodijk

Documentation

    11104: Fix method name in code example thanks to @flack
    7963: Improve docs: INSTANCE OF needs class metadata as parameter value thanks to @flaushi

Static Analysis

    11095: PHPStan 5.16.0, Symfony 7.0 thanks to @derrabus

2.17.1 - 17 November 2023

    Total issues resolved: 0
    Total pull requests resolved: 2
    Total contributors: 2

Bug

    11065: AbstractSqlExecutor::__sleep should return property names thanks to @kerbert101
    11039: Adds metadata field type and enumType validation against Entity property type thanks to @yceruto

2.17.0 - 16 November 2023

    Total issues resolved: 0
    Total pull requests resolved: 22
    Total contributors: 6

Documentation

    11059: Prepare 2.17.0 thanks to @derrabus
    10887: Add note about not-enabling lazy-ghosts thanks to @nicolas-grekas

Deprecation

    11056: Deprecate annotation classes for named queries thanks to @derrabus
    11027: Make serialized SQL executors forward compatible thanks to @greg0ire
    10987: Deprecate EntityManager*::getPartialReference() thanks to @greg0ire
    8931: Deprecate reliance on non-optimal defaults thanks to @greg0ire

Bug

    11048: Restore backward compatibility with previous format thanks to @greg0ire

Improvement

    11044: Recommend SEQUENCE until doctrine/dbal 4 is released thanks to @greg0ire
    11009: Implement proxy name resolver thanks to @greg0ire
    11006: Remove redundant check thanks to @dbu
    11000: Copy Debug class from doctrine/common thanks to @greg0ire
    10990: Allow creating mocks of the Query class thanks to @derrabus
    10974: Remove partial object expression usage thanks to @beberlei
    10946: Adds metadata field type validation against Entity property type thanks to @greg0ire
    10919: Support Symfony 7 by adding return types conditionally thanks to @derrabus
    10999: Undeprecate autoloader class thanks to @greg0ire
    10989: Add method name in exception thanks to @greg0ire
    8391: [GH-1569] Optimize eager fetch for collections to batch query thanks to @beberlei

Static Analysis

    10988: Add missing "deprecated" annotation on the annotation driver thanks to @greg0ire

Test Suite

    10980: Don't assert that BIGINTs are stored as strings thanks to @derrabus

New Feature

    10970: Allow to disable "DISTINCT" in LimitSubqueryWalker thanks to @goetas

Deprecation,New Feature

    10837: Deprecate not-enabling lazy-ghosts and decouple from doctrine/common's proxies thanks to @nicolas-grekas

2.16.3 - 16 November 2023

    Total issues resolved: 0
    Total pull requests resolved: 12
    Total contributors: 7

Bug

    11018: Fix the support for enum types in the ResultSetMappingBuilder thanks to @stof
    10808: Verify UnitOfWork::HINT_DEFEREAGERLOAD exists and is true thanks to @oscmarb

Documentation

    11007: Address split of doctrine/common thanks to @greg0ire
    10951: Fix bullet list layout thanks to @PowerKiKi
    10945: docs[query-builder]: fix rendering of Doctrine\DBAL\ParameterType::* thanks to @kaznovac
    10933: docs: use modern named arguments syntax thanks to @kaznovac
    10930: Improve doc job thanks to @greg0ire
    10929: tutorials[getting-started]: example fix bug id type definition thanks to @kaznovac

Test Suite

    10996: Cover calling AbstractQuery::setParameter() with an array parameter thanks to @derrabus
    10940: tests[ORMSetupTest]: testCacheNamespaceShouldBeGeneratedForApcu requires enabled apc thanks to @kaznovac

CI

    10963: Test against php 8.3 thanks to @sergiy-petrov

Static Analysis

    10958: PHPStan 1.10.35, Psalm 5.15.0 thanks to @derrabus

2.16.2 - 27 August 2023

    Total issues resolved: 0
    Total pull requests resolved: 5
    Total contributors: 5

Bugfixes

    10915: Mitigate problems with EntityManager::flush() reentrance since 2.16.0 (Take 2) thanks to @mpdude

Static Analysis

    10907: Add back throws annotation to getSingleScalarResult thanks to @darenas31415

Documentation

    10923: basic-mapping: fix new-line rendered in output thanks to @kaznovac
    10916: Use required classes for Lifecycle Callback examples thanks to @SerheyDolgushev
    10904: Fix link on known issues docs thanks to @hockdudu

2.16.1 - 9 August 2023

    Total issues resolved: 0
    Total pull requests resolved: 10
    Total contributors: 6

Static Analysis

    10895: PHPStan 1.10.28, Psalm 5.14.1 thanks to @derrabus
    10870: Fix return type of getSingleScalarResult thanks to @whatUwant

Bug,Regression

    10884: Fix broken changeset computation for entities loaded through fetch=EAGER + using inheritance thanks to @mpdude

Documentation

    10883: Document more clearly that the insert order is an implementation detail thanks to @mpdude
    10866: Add an UPGRADE notice about the potential changes in commit order thanks to @mpdude
    10862: Update branch metadata thanks to @greg0ire

Bug

    10881: Use a dedicated exception for the check added in #10785 thanks to @mpdude
    10865: Add possibility to set reportFieldsWhereDeclared in ORMSetup thanks to @W0rma
    9301: Fix UnitOfWork->originalEntityData is missing not-modified collections after computeChangeSet thanks to @olsavmic

Bug,Deprecation

    10878: Turn identity map collisions from exception to deprecation notice thanks to @mpdude

2.16.0 - 1 August 2023

    Total issues resolved: 0
    Total pull requests resolved: 15
    Total contributors: 7

New Feature

    10537: Introduce FilterCollection#restore method thanks to @VincentLanglet

Improvements

    10848: Use properties instead of getters to read property/class names via reflection thanks to @nicolas-grekas
    10832: Decouple public API from Doctrine\Persistence\Proxy thanks to @nicolas-grekas
    10785: Add a safeguard against multiple objects competing for the same identity map entry thanks to @mpdude
    10735: Make it possible to have non-NULLable self-referencing associations when using application-provided IDs thanks to @mpdude
    10704: Remove unreachable piece of code thanks to @greg0ire
    10547: Compute the commit order (inserts/deletes) on the entity level thanks to @mpdude
    10833: Cleanup psalm-type AutogenerateMode thanks to @nicolas-grekas
    10598: Support not Insertable/Updateable columns for entities with JOINED inheritance type thanks to @e-vil-dev

Deprecation

    10743: Make EntityPersisters tell the UoW about post insert IDs early thanks to @mpdude
    10455: Make Annotations/Attribute mapping drivers report fields for the classes where they are declared thanks to @mpdude

Static Analysis

    10721: Narrow return types for AbstractQuery::getSingleScalarResult() thanks to @phansys

Test Suite

    10809: Add test to show why delete-before-insert may be challenging thanks to @mpdude

2.15.5 - 1 August 2023

    Total issues resolved: 0
    Total pull requests resolved: 2
    Total contributors: 2

Bugfixes

    10855: fix: use platform options instead of deprecated custom options thanks to @dunglas
    10856: Fix/Self deprecation with getQueryCacheImpl thanks to @VincentLanglet

2.15.4 - 24 July 2023

    Total issues resolved: 0
    Total pull requests resolved: 18
    Total contributors: 8

Documentation

    10847: Remove toc thanks to @greg0ire
    10828: Match namespace in XML file with namespace in XSD file thanks to @greg0ire
    10812: Remove lone dash thanks to @greg0ire
    10800: Explain EntityManager::getReference() peculiarities thanks to @mpdude

Static Analysis

    10842: PHPStan 1.10.25, Psalm 5.13.1 thanks to @derrabus
    10804: Follow recommendation about multiline type thanks to @greg0ire
    10802: Upgrade to Psalm 5.13 thanks to @greg0ire

CI

    10824: Add dummy title to the sidebar before checking docs thanks to @greg0ire

Bug

    10819: Fix cloning entities when using lazy-ghost proxies thanks to @nicolas-grekas
    10813: Let XML driver treat <id> field attributes same as regular <field> tag thanks to @Greg0
    10806: Fix enum change set recomputation on single entity thanks to @rmikalkenas
    10791: Avoid creating unmanaged proxy instances for referred-to entities during merge() thanks to @mpdude
    10789: distinct() updates QueryBuilder state correctly thanks to @macroparts
    10786: Fix attach entity listener when reset class metadata factory thanks to @vuongxuongminh

Test Suite

    10807: Move three "Ticket/"-style tests to the right namespace thanks to @mpdude
    10803: Fix unserialize() errors when running tests on PHP 8.3 thanks to @nicolas-grekas
    10798: Resort on Query::HINT_FORCE_PARTIAL_LOAD less thanks to @greg0ire

Code Style

    10790: Work around slevomat/coding-standard issues thanks to @greg0ire

2.15.3 - 22 Jun 2023

    Total issues resolved: 0
    Total pull requests resolved: 11
    Total contributors: 8

Bugfixes

    10762: Don't call canEmulateSchemas in SchemaTool when possible thanks to @nicolas-grekas
    10759: Don't call deprecated getSQLResultCasing and usesSequenceEmulatedIdentityColumns when we know the platform thanks to @nicolas-grekas
    10758: revert: transform backed enum to value thanks to @Gwemox
    10747: fix: OneToManyPersister does not take custom identifier types into account for orphan removal thanks to @wtfzdotnet
    10645: Restore document proxy state to uninitialized on load exception thanks to @notrix
    10763: Defer removing removed entities from to-many collections until after transaction commit thanks to @mpdude

Static Analysis

    10771: PHPStan 1.10.18, Psalm 5.12.0 thanks to @derrabus
    10740: Remove useless ignore rule thanks to @greg0ire

Test Suite

    10780: Avoid partial thanks to @greg0ire

Documentation

    10776: Fix missing setFilterSchemaAssetsExpression in phpdoc thanks to @dmitryuk
    10774: Document how to produce DTOs with a result set mapping thanks to @greg0ire

2.15.2 - 1 Jun 2023

    Total issues resolved: 0
    Total pull requests resolved: 8
    Total contributors: 8

Documentation

    10734: Document pdo_sqlite requirement for tests thanks to @greg0ire
    10708: Correct docs link thanks to @mbabker
    10686: Documentation typo thanks to @edent

Bugfixes

    10666: Create ReflectionReadonlyProperty from their declaring class so their value can be set thanks to @MatTheCat
    10643: Fix single table inheritance with intermediate abstract class(es) thanks to @htto
    10508: Fix id hash of entity with enum as identifier thanks to @Gwemox
    10486: Fix to-many collections left in dirty state after entities are removed by the UoW thanks to @mpdude

Deprecation fixes

    10737: Fix deprecations from doctrine/lexer thanks to @nicolas-grekas

2.15.1 - 7 May 2023

    Total issues resolved: 0
    Total pull requests resolved: 6
    Total contributors: 4

Bug

    10684: Support unserializing 2.14 ParserResult instances thanks to @derrabus
    10671: Fix attribute ManyToMany mapping thanks to @BoShurik

Static Analysis

    10679: Upgrade to Psalm 5.11.0 thanks to @greg0ire
    10677: Upgrade to Psalm 5.10.0 thanks to @greg0ire

Documentation

    10674: Bump version numbers in the README thanks to @greg0ire
    10668: Added doc for the fields parameter of the UniqueConstraint attribute thanks to @stollr

2.15.0 - 3 May 2023

    Total issues resolved: 1
    Total pull requests resolved: 30
    Total contributors: 8

New Features

    10234: Support NOT expression thanks to @remi-san

Improvements

    10601: Support options like charset and collation on DiscriminatedColumn thanks to @JanTvrdik
    10599: fix(persistent-collection): check association is not nullable before using it as an array thanks to @amina-seraoui
    10473: Allow to-many associations on mapped superclasses w/ ResolveTargetEntityListener thanks to @mpdude
    10397: Factor out logic that tracks mapping inheritance thanks to @mpdude
    10351: Allow doctrine/instantiator 2 thanks to @derrabus

Deprecations

    10654: Deprecate usage of @JoinColumn on the inverse side of one-to-one associations thanks to @mpdude
    10519: Deprecate overriding associations not inherited from a mapped superclass thanks to @mpdude
    10470: Deprecate overriding fields/associations inherited from other entities thanks to @mpdude
    10423: Add deprecations for "table per class" inheritance thanks to @mpdude

Bugfixes

    10554: Make "targetEntity must not be a mapped superclass" a lazy check thanks to @mpdude and @alexander-schranz

Static Analysis

    10602: Remove duplicate array shape thanks to @greg0ire
    10478: Move psalm types to ClassMetadata thanks to @greg0ire
    10442: Add embedded class mapping array shape thanks to @greg0ire
    10430: Use FieldMapping array shape even more thanks to @greg0ire
    10408: Field mapping improvements thanks to @greg0ire
    10403: Reuse association mapping array shape thanks to @greg0ire
    10381: Use more precise types for class strings thanks to @greg0ire
    10372: Use the same type as in the DBAL thanks to @greg0ire
    10365: Address new behavior of $firstResult thanks to @greg0ire
    10156: Identity map cannot contains null value thanks to @PowerKiKi
    10513: Use array shapes where appropriate thanks to @greg0ire

Test Suite

    10569: Address deprecation of fetchAll() thanks to @greg0ire
    10545: Make data providers static thanks to @derrabus
    10464: Fix some tests that were missed in #10431 thanks to @mpdude
    10406: Test with a stable PHPUnit thanks to @derrabus

Code Style

    10477: Remove underscore prefix on private variables thanks to @greg0ire
    10465: Remove commented-out code sections thanks to @mpdude

Documentation

    10428: Fix version number in UPGRADE.md thanks to @mpdude
    10426: Slight docblock improvements for CM::parentClasses thanks to @mpdude

2.14.3 - 22 Apr 2023

    Total issues resolved: 0
    Total pull requests resolved: 5
    Total contributors: 5

Bugfixes

    10630: Fixed xsd schema for support FQCN type thanks to @tmihalicka
    10587: Handle null comparisons in ManyToManyPersister thanks to @MatTheCat

Documentation

    10642: fix syntax array association on partial index documentation thanks to @yobrx
    10620: fix typo in HydrationCompleteHandler doc thanks to @ecourtial

Test Suite

    10632: Run tests on SQLite with foreign keys enabled thanks to @derrabus

2.14.2 - 12 Apr 2023

    Total issues resolved: 0
    Total pull requests resolved: 42
    Total contributors: 14

Bugfixes

    10579: add $isXsdValidationEnabled to SimplifiedXmlDriver constructor thanks to @dmaicher
    10516: fix: use executeStatement in SchemaTool thanks to @simPod
    10489: Fix forgotten exception throws thanks to @janedbal
    10443: Replace hardcoded name with Command::getName() in output message from UpdateCommand thanks to @phansys
    10434: Avoid wasting Opcache memory with Paginator queries thanks to @mpdude
    10420: Fix #9095 by re-applying #9096 thanks to @mpdude
    8797: Avoid unnecessary information in query hints to improve query cache hit ratio thanks to @mpdude
    8415: Fix association handling when there is a MappedSuperclass in the middle of an inheritance hierarchy thanks to @mpdude

Improvement

    10444: Make Paginator-internal query cacheable in the query cache thanks to @mpdude
    10411: Fill in missing subclasses when loading ClassMetadata thanks to @mpdude

Static Analysis

    10604: Upgrade to Psalm 5.9.0 thanks to @greg0ire
    10575: PHPStan 1.10.6, Psalm 5.8.0 thanks to @derrabus
    10540: Mark SqlWalker methods as not deprecated thanks to @stof
    10507: Baseline Psalm errors for DBAL 3.6 thanks to @derrabus
    10490: Fix invalid phpdocs missing null thanks to @janedbal
    10476: Hunt down invalid doc blocks thanks to @greg0ire
    10468: Psalm 5.6.0, PHPStan 1.9.14 thanks to @derrabus
    10445: Psalm 5.5.0 thanks to @derrabus
    10418: Use correct type for FieldMapping#unique thanks to @greg0ire
    10415: Remove ignore rules for fixed issues thanks to @greg0ire
    10541: Bump dev tools thanks to @derrabus

Documentation

    10589: Added missing ';' thanks to @e2palmes
    10583: docs: Remove incorrect @SequenceGenerator info thanks to @Mika56
    10539: More precisely document the performance impact of to-one associations towards inheritance hierarchies thanks to @mpdude
    10534: [Documentation] consistency order for docblock in association mapping thanks to @MrYamous
    10529: Correct use of PHP attribute thanks to @joshpme
    10526: fix typo in faq.rst thanks to @alzee
    10429: Review the documentation regarding entity inheritance thanks to @mpdude
    10133: Clarify difference between transactional() methods of Connection and EntityManager thanks to @sbusch

CI

    10563: Skip test instead of commenting it out thanks to @greg0ire
    10480: Run tests with ext-pgsql thanks to @derrabus

Test Suite

    10560: Skip test instead of commenting it out thanks to @derrabus
    10546: Ignore the cache dir of PHPUnit 10 thanks to @derrabus
    10544: Make data providers static thanks to @derrabus
    10502: Remove calls to assertObjectHasAttribute() thanks to @derrabus
    10501: Remove calls to withConsecutive() thanks to @derrabus
    10498: Use recognized array key thanks to @greg0ire
    10493: Make all data providers static thanks to @derrabus
    10453: Add regression test for a to-many relationship on a base class & mapped superclass in the hierarchy thanks to @mpdude
    10441: Use the right property thanks to @greg0ire
    10433: Make sure tests from #7837 are actually run thanks to @mpdude
    10424: Fixup GH8127 test case thanks to @mpdude

2.14.1 - 18 Jan 2023

    Total issues resolved: 0
    Total pull requests resolved: 23
    Total contributors: 10

Bugfixes

    10355: Include parameter types in hydration cache key generation thanks to @derrabus
    10088: Ensure consistent original data with enums thanks to @HypeMC
    10385: Fix initializing lazy objects and get rid of "Typed property must not be accessed before initialization" errors thanks to @nicolas-grekas

Documentation

    10412: Adding link to Attributes reference thanks to @ThomasLandauer
    10399: Fix DDL example for Mapped Superclasses thanks to @mpdude
    10396: Document the meanings of 'inherited' and 'declared' in field mapping information thanks to @mpdude
    10394: Write down what "transient" means thanks to @mpdude
    10393: Place a warning about the uses of traits in the documentation thanks to @mpdude
    10377: fix typo for missing a comma thanks to @fauVictor
    10368: Docs: Removing type: 'integer' from mappings thanks to @ThomasLandauer
    10364: Docs: Moving attributes mapping to first position thanks to @ThomasLandauer
    10363: Docs: Deleting duplicate mapping example thanks to @ThomasLandauer
    10357: Shorter deprecation message thanks to @derrabus
    10327: Improve and fix TypedFieldMapper docs thanks to @michnovka
    10276: Added warning about query cache in relation to parameters thanks to @antman3351

CI

    10404: Stop allowing phpbench's master branch thanks to @greg0ire
    10328: Require dev version of phpbench thanks to @greg0ire

Improvement

    10395: Sync variable name with class name thanks to @greg0ire
    10342: Add Fully-Qualified class name in UnrecognizedField exception thanks to @Kern046

Static Analysis

    10390: Use more accurate phpdoc for OptimisticLockException thanks to @greg0ire
    10382: PHPStan 1.9.8, Psalm 5.4.0 thanks to @derrabus
    10359: PHPStan 1.9.5 thanks to @derrabus
    10343: Fix Psalm errors with Collection 2.1.2 thanks to @derrabus

2.14.0 - 20 Dec 2022

    Total issues resolved: 0
    Total pull requests resolved: 43
    Total contributors: 10

New Features

    10313: Add TypedFieldMapper for automatic mapping of typed PHP fields to DBAL types thanks to @michnovka
    10288: Allow enum discriminator columns thanks to @michnovka
    10187: Leverage LazyGhostTrait when possible thanks to @nicolas-grekas
    10040: Add lockMode to EntityManager#refresh() thanks to @michnovka

Improvements

    10321: Drop forceful loading of annotations thanks to @greg0ire
    10320: Support doctrine/annotations 2 thanks to @derrabus
    10301: Allow lexer 2 thanks to @greg0ire
    10233: update help for RunDqlCommand thanks to @dmaicher
    10206: Use a more accurate name for $annotationName thanks to @greg0ire
    10123: Allow doctrine/event-manager 2 thanks to @derrabus
    10122: Automap events in AttachEntityListenersListener thanks to @HypeMC
    10070: Add support for doctrine/collection 2 thanks to @greg0ire
    10153: Address dbal deprecations thanks to @greg0ire
    10121: Address deprecation of Table::changeColumn() thanks to @greg0ire
    10116: Address deprecations from DBAL thanks to @greg0ire
    10105: Backport DBAL-related fixes thanks to @greg0ire
    10162: Use error style for notifications thanks to @greg0ire
    10256: Make use statements redundant thanks to @greg0ire

Deprecations

    10212: Add a constructor to CacheKey thanks to @derrabus
    10204: Rename internal methods thanks to @greg0ire
    10178: Deprecate the Annotation interface thanks to @derrabus
    10098: Deprecate annotation driver thanks to @greg0ire
    10086: Create dedicated event argument classes thanks to @franmomu
    10045: Deprecate Doctrine\ORM\Proxy\Proxy and decouple a bit more from Doctrine\Common\Proxy thanks to @nicolas-grekas
    9961: Deprecate EntityManager::create() thanks to @derrabus
    10267: Add $not constructor parameter to AST classes thanks to @derrabus

Bugfixes

    10165: Fix calls to AbstractSchemaManager::createSchema() thanks to @derrabus

Static Analysis

    10315: Document stdClass structures used by CommitOrderCalculator thanks to @derrabus
    10242: Solve some PHPStan baseline errors thanks to @VincentLanglet
    10238: Use more precise phpdoc thanks to @VincentLanglet
    10231: Make the code easier to statically analyse thanks to @greg0ire
    10224: Document property as non-nullable thanks to @greg0ire
    10218: Ignore PropertyNotSetInConstructor thanks to @greg0ire
    10202: Allow "Expr\Func" as condition in join in PHPDoc thanks to @willemverspyck
    10199: refactor: use list type in SchemaTool thanks to @simPod
    10145: Fix type doc blocks in annotation classes thanks to @derrabus
    10089: Document properties as possibly null thanks to @greg0ire
    10002: Make paginator covariant thanks to @VincentLanglet
    10302: Add assertions about non nullability thanks to @greg0ire

Documentation

    10205: Avoid references to annotations thanks to @greg0ire
    10161: Make the mapping driver deprecations more obvious thanks to @greg0ire

Test Suite

    10282: Control proxy implementation via env thanks to @derrabus
    10197: Backport NonProxyLoadingEntityManager::refresh() signature change thanks to @michnovka

2.13.5 - 20 Dec 2022

    Total issues resolved: 0
    Total pull requests resolved: 17
    Total contributors: 5

Bugfixes

    10311: add apcu enabled check if apcu extension loaded (#10310) thanks to @aleksejs1
    10277: Fix changeset computation for enum arrays thanks to @michnovka
    10274: Fix enum IDs in association mappings thanks to @michnovka

Static Analysis

    10318: PHPStan 1.9.4 thanks to @derrabus
    10317: Psalm 5.3.0 thanks to @derrabus
    10298: PHPStan 1.9.3 thanks to @derrabus
    10291: Psalm 5.2.0 thanks to @derrabus
    10257: Leverage Lexer's Token type (follow up) thanks to @greg0ire
    10248: Psalm 5 fixes thanks to @greg0ire
    10247: Fix types for Paginator thanks to @derrabus
    10261: Bump Psalm to 5.0.0 and fix errors for Symfony 6.2 thanks to @derrabus
    10264: Upgrade to Psalm 5.1.0 thanks to @greg0ire
    10252: Upgrade to Psalm v5 thanks to @greg0ire

Code Style

    10295: Bump coding standard to v11 thanks to @derrabus

Test Suite

    10294: Rename AbstractCommandTest thanks to @derrabus

CI

    10287: Run tools on PHP 8.2 thanks to @derrabus

Documentation

    10271: Correct spelling errors thanks to @kalifg

2.13.4 - 23 Nov 2022

    Total issues resolved: 0
    Total pull requests resolved: 23
    Total contributors: 8

Bugfixes

    10110: Fix deprecated trigger help comment thanks to @davidromani
    10074: Fix change set computation with enums thanks to @HypeMC

Static Analysis

    10221: Reverse-engineer actual type from code thanks to @greg0ire
    10213: Psalm 4.30.0, PHPStan 1.9.2 thanks to @derrabus
    10200: PHPStan 1.9.0 thanks to @derrabus
    10182: PHPStan 1.8.11 thanks to @derrabus
    10163: Fix build with DBAL 3.5 thanks to @derrabus
    10144: Fix FieldMapping for generated key thanks to @ondrejmirtes
    10128: Psalm 4.29 thanks to @derrabus
    10115: PHPStan 1.8.8, Psalm 4.28.0 thanks to @derrabus

Documentation

    10179: Remove reference to deprecated DriverChain from docs thanks to @derrabus
    10176: Migrate more references to annotations thanks to @greg0ire
    10174: Adapt use statements to the code thanks to @greg0ire
    10160: Adjust comments thanks to @greg0ire
    10157: Migrate more documentation towards attributes thanks to @greg0ire
    10126: Modernize documentation code thanks to @greg0ire
    10120: Fix grammer in working-with-objects thanks to @jonnyeom
    10104: Add isMemberOf and isInstanceOf to Expr helper list thanks to @ker0x

Test Suite

    10239: Adjust expectation thanks to @greg0ire
    10229: Widen parameter type thanks to @greg0ire

CI

    10180: Bump CI to PHP 8.2 and latest database versions thanks to @derrabus
    10136: Stop triggering static analysis workflows on tests thanks to @greg0ire

Improvement

    10154: Do not export phpstan stuff thanks to @simPod

2.13.3 - 7 Oct 2022

    Total issues resolved: 0
    Total pull requests resolved: 7
    Total contributors: 3

CI

    10106: Bump CI workflows thanks to @greg0ire

Test Suite

    10101: Assert that serialization leaves PersistentCollection usable thanks to @greg0ire
    10100: Forward compat attributes thanks to @greg0ire

Documentation

    10099: Fix attribute reference thanks to @greg0ire
    10094: Fix heading levels for the embeddable tutorial thanks to @stof

Static Analysis

    10072: Remove return type override thanks to @greg0ire

Bug,Regression

    10058: Fix using enums with the QueryBuilder thanks to @HypeMC

2.13.2 - 22 Sep 2022

    Total issues resolved: 0
    Total pull requests resolved: 11
    Total contributors: 8

Bugfixes

    10041: Fix ArrayHydration of enums thanks to @michnovka

Static Analysis

    10054: Mark ClassMetadataInfo::sequenceGeneratorDefinition as nullable thanks to @greg0ire
    10033: PHPStan 1.8.5, Psalm 4.27.0 thanks to @derrabus
    9983: Add phpdoc for ClassMetadataInfo::discriminatorColumn property thanks to @VincentLanglet

Documentation

    10028: More strange break lines in inheritance-mapping.rst thanks to @carlosbuenosvinos
    9994: Update query-builder.rst thanks to @achasinh
    9848: Improve orphan removal documentation - recommend using cascade=persist thanks to @olsavmic

Internal

    10020: Bump Ubuntu version and shared workflows thanks to @derrabus
    10009: Upgrade to doctrine/coding-standard 10.0.0 thanks to @greg0ire
    10008: Fail gracefully if EM could not be constructed in tests thanks to @derrabus

2.13.1 - 09 Aug 2022

    Total issues resolved: 0
    Total pull requests resolved: 5
    Total contributors: 2

Deprecation

    9980: Undeprecate LifecycleEventArgs thanks to @franmomu

Documentation

    9979: Update documentation to not use deprecated method thanks to @franmomu
    9971: Update branch metadata thanks to @derrabus

Static Analysis

    9977: Backport type fixes for EntityListenerResolver thanks to @derrabus

Test Suite

    9972: Remove calls to deprecated Type::getName() thanks to @derrabus

2.13.0 - 08 Aug 2022

    Total issues resolved: 0
    Total pull requests resolved: 37
    Total contributors: 10

Improvement

    9969: Address DBAL 3.4 deprecations thanks to @derrabus
    9915: Make EntityManager @final and its constructor public thanks to @nicolas-grekas
    9903: schema tool: remove useless text from --dump-sql output thanks to @glaszig
    9839: Use proper API for introspection of tables thanks to @morozov
    9780: Kill call_user_func(_array) thanks to @derrabus
    9737: Improve compatibility with DBAL 4 for MySQL, MariaDB and PostgreSQL thanks to @morozov
    9730: Forward compatibility with DBAL 4 thanks to @morozov
    6728: Validate XML mapping against XSD file thanks to @greg0ire

Static Analysis

    9965: Improve phpdoc for ClassMetadataInfo thanks to @VincentLanglet
    9826: Improve phpdoc for Configuration thanks to @greg0ire
    9794: Add type for AssociationMapping thanks to @VincentLanglet
    9756: Document types as they are passed thanks to @greg0ire
    9751: Update Psalm baseline thanks to @derrabus

Deprecation

    9945: Deprecate QueryBuilder APIs exposing its internal state thanks to @derrabus
    9906: Deprecate LifecycleEventArgs thanks to @franmomu
    9876: Change parent classes in some events thanks to @franmomu
    9833: Deprecate reliance on sequence-emulated identity columns thanks to @greg0ire
    9809: Deprecate passing null to Query::setFirstResult() thanks to @greg0ire
    9791: Deprecate calling setters without arguments thanks to @derrabus
    9786: Prepare split of output walkers and tree walkers thanks to @derrabus
    9784: Deprecate passing null to Query::setDQL() thanks to @greg0ire
    9765: Deprecate omitting the alias in QueryBuilder::update() and delete() thanks to @Hanmac
    9747: Deprecate omitting second argument to joinColumnName() thanks to @greg0ire
    9704: Reference ClassMetadataInfo less and less thanks to @greg0ire

Test Suite

    9938: Stop passing event manager to constructor thanks to @greg0ire
    9895: Avoid SQL assertions thanks to @greg0ire
    9808: Remove calls to deprecated MockBuilder::setMethods() thanks to @derrabus
    9806: Rename Abstract*Test to *TestCase thanks to @derrabus
    9796: Add missing import thanks to @derrabus
    9790: MockTreeWalker should be an SqlWalker thanks to @derrabus
    9789: Move duplicate fixture into dedicated file thanks to @derrabus

New Feature

    9936: Support native enum hydration when using NEW operator thanks to @romm
    9655: Allow setting column options like charset and collation on JoinTable, JoinColumn and InverseJoinColumn thanks to @ruudk

Improvement,Static Analysis

    9932: Add helper function TreeWalkerAdapter::getMetadataForDqlAlias() thanks to @derrabus
    9837: Address deprecation of getDatabasePlatform() thanks to @greg0ire
    9801: Widen types thanks to @greg0ire

Documentation

    9766: Document future argument better thanks to @greg0ire

2.12.4 - 08 Aug 2022

    Total issues resolved: 0
    Total pull requests resolved: 18
    Total contributors: 7

Test Suite

    9966: fix: class normalisation test thanks to @Tofandel
    9930: Simplify LanguageRecognitionTest thanks to @derrabus
    9914: Avoid supportsCreateDropDatabase() thanks to @greg0ire
    9907: Add tests for SQL output feature thanks to @greg0ire
    9892: Address array object type deprecation thanks to @greg0ire
    9874: Migrate more usages of SchemaTool::createSchema() thanks to @greg0ire
    9823: Backport fixes from upstream branch thanks to @greg0ire

Static Analysis

    9964: Psalm 4.26.0 & build failures with DBAL 3.4.0 thanks to @derrabus
    9941: Psalm 4.25.0, PHPStan 1.8.2 thanks to @derrabus
    9922: Widen types for DiscriminatorMap thanks to @derrabus
    9887: PHPStan 1.8.0 thanks to @derrabus
    9865: Psalm 4.24.0, PHPStan 1.7.15 thanks to @derrabus
    9858: PHP CodeSniffer 3.7.1, PHPStan 1.7.14 thanks to @derrabus

Documentation

    9943: Update branch info in README and .doctrine-project.json thanks to @derrabus
    9880: Fix typo in AbstractQuery thanks to @CarlSchwan
    9871: preUpdate: Add restriction that changed field needs to be in computed… thanks to @ThomasLandauer

Bug

    9927: Allow custom object types as foreign keys thanks to @louisezetterlund
    9870: [GH-9807] Fix: initialize potentially empty collections at the hydration complete thanks to @popov-a-e

2.12.3 - 17 June 2022

    Total issues resolved: 0
    Total pull requests resolved: 16
    Total contributors: 3

Static Analysis

    9844: PHPStan 1.7.13 thanks to @derrabus
    9843: Flip conditional extension of legacy AnnotationDriver class thanks to @derrabus
    9842: PHP CodeSniffer 3.7 thanks to @derrabus
    9818: Document missing possible types thanks to @greg0ire
    9812: PHPStan 1.7.9 thanks to @derrabus
    9802: Fix wrong types thanks to @greg0ire
    9785: PHPStan 1.7.0 thanks to @derrabus
    9779: Document callable as possible thanks to @greg0ire
    9746: Better phpdoc tests thanks to @greg0ire

Test Suite

    9841: Add missing property declaration thanks to @derrabus
    9805: Remove empty test file thanks to @derrabus

CI,Test Suite

    9840: Run tests on PHP 8.2 thanks to @derrabus

Documentation

    9769: Add use statement thanks to @greg0ire
    9749: Omit version number in README thanks to @greg0ire

CI

    9732: Exclude /ci from distribution packages thanks to @derrabus

Bug

    9619: Make Reflection available to ConvertMappingCommand thanks to @bartholdbos


2.12.2 - 03 May 2022

    Total issues resolved: 0
    Total pull requests resolved: 17
    Total contributors: 8

Improvement

    9723: Allow doctrine/deprecations 1.0 thanks to @derrabus

Static Analysis

    9718: Psalm 4.23, PHPStan 1.6.3 thanks to @derrabus
    9708: Fix psalm annotation for Entity attribute thanks to @michnovka
    9703: Update ClassMetadataInfo::table definition thanks to @pbourdet
    9688: PHPStan 1.6.1 thanks to @derrabus
    9682: PHPStan 1.6.0 thanks to @derrabus
    9677: Document ORM drivers only really load ORM metadata thanks to @greg0ire
    9676: Fix HydrationException::invalidDiscriminatorValue parameter type thanks to @franmomu
    9675: Fix type on ClassMetadata discriminatorMap thanks to @franmomu

Test Suite

    9707: Remove some ConnectionMock methods thanks to @morozov
    9706: Remove unused OrmTestCase::getTestEntityManager() parameters thanks to @morozov
    9692: Use ClassMetadata over ClassMetadataInfo in tests thanks to @greg0ire
    9683: Remove dynamic property declarations thanks to @derrabus

Documentation

    9699: Add missing use statement thanks to @ThomasLandauer
    9698: use valid link syntax thanks to @ThomasLandauer
    9691: Reference ClassMetadaInfo less thanks to @greg0ire

Bug

    9679: Drop SymfonyStyle[listing] for sqls thanks to @simPod


2.12.1 - 22 Apr 2022

    Total issues resolved: 0
    Total pull requests resolved: 1
    Total contributors: 1

Bug

    9671: Conditionally extend the old AnnotationDriver class thanks to @derrabus


2.12.0 - 19 Apr 2022

    Total issues resolved: 1
    Total pull requests resolved: 52
    Total contributors: 8

Deprecation,Documentation

    9661: Deprecate the doctrine binary thanks to @derrabus

Test Suite

    9658: Fix IdentifierFlattenerEnumIdTest thanks to @michnovka
    9649: Fix test file/class names thanks to @michnovka
    9612: Skip tests requiring ObjectManagerAware thanks to @derrabus
    9489: Avoid calling merge() thanks to @derrabus
    9479: Remove useless catches thanks to @derrabus
    9472: Skip tests related to PersistentObject if that class is missing thanks to @derrabus
    9451: Streamline cache creation in tests thanks to @derrabus
    9423: Introduce assertQueryCount() thanks to @derrabus
    9418: Switch tests to the middleware logging system thanks to @derrabus
    9404: Rework some tests that use hardcoded DBAL mocks thanks to @morozov

Bug

    9657: Fix enum hydration when fetching partial results thanks to @michnovka
    9580: Check if association already contains object thanks to @klammbueddel
    9459: Check requirements for metadata drivers thanks to @derrabus
    9656: Indicate support for doctrine/persistence 3 thanks to @derrabus

Deprecation,Improvement

    9646: Improve exception message thanks to @greg0ire
    9511: Replace TreeWalkerChainIterator with a generator thanks to @derrabus
    9443: Introduce DoctrineSetup as a replacement for Setup thanks to @derrabus

Deprecation

    9641: Deprecate console helper thanks to @derrabus
    9592: Deprecate or throw on namespace alias usage thanks to @greg0ire
    9533: Deprecate custom ObjectRepository implementations thanks to @derrabus
    9532: Un-deprecate the current proxy mechanism thanks to @derrabus
    9512: Document deprecation of AbstractCollectionPersister helpers thanks to @derrabus
    9475: Deprecate methods removed in 3.0 thanks to @derrabus
    9397: Deprecate MultiGetRegion thanks to @derrabus

Static Analysis

    9633: Leverage generic persistence event classes thanks to @derrabus
    9621: Fix types on ResultSetMapping thanks to @derrabus
    9603: Implement int-mask-of where appropriate thanks to @greg0ire
    9566: Fix types on walkLiteral() and walkLikeExpression() thanks to @derrabus
    9565: Fix type on SqlWalker::walkPathExpression() thanks to @derrabus
    9553: Document tree walker class strings thanks to @derrabus
    9552: Use literal types for JOIN&#95;TYPE&#95;* constants thanks to @derrabus
    9549: Leverage Lexer's Token type thanks to @derrabus
    9541: Improve templating thanks to @greg0ire
    9527: Document QueryComponent array shape thanks to @derrabus
    9525: Fix more types on EntityRepository and FilterCollection thanks to @derrabus
    9492: Fix types on QueryBuilder thanks to @derrabus
    9474: Fix types on EntityRepository thanks to @derrabus
    9401: Fix types on CacheLogger implementations thanks to @derrabus

New Feature

    9629: Support Enum IDs and search by Enum fields thanks to @michnovka
    9616: Support enums as default values thanks to @derrabus and @jgroc-de
    9497: Add support for array of enums thanks to @dreadnip
    9373: Support enum cases as parameters thanks to @derrabus

Improvement

    9587: Implement colocated mapping driver thanks to @greg0ire
    9578: Leverage MemcachedAdapter::isSupported() thanks to @derrabus
    9481: Rename DoctrineSetup to ORMSetup thanks to @derrabus
    9480: Modernize strpos() calls thanks to @derrabus
    9453: Support enums in findBy() calls thanks to @derrabus
    9019: validate schema command: allow to debug missing schema updates list thanks to @COil

Deprecation,Static Analysis

    9507: Fix types on caches thanks to @derrabus

Deprecation,Static Analysis,Test Suite

    9466: Fix types on persisters thanks to @derrabus

Documentation

    9448: Document the new DoctrineSetup class thanks to @derrabus


2.11.3 - 19 Apr 2022

    Total issues resolved: 0
    Total pull requests resolved: 10
    Total contributors: 6

Bug

    9663: ScalarColumnHydrator: prevent early-bail on falsy values thanks to @MrMitch
    9623: explicitly use the non-deprecated ORMException thanks to @BenoitDuffez
    9589: Fix type errors with XML export on PHP 8.1 thanks to @vrestihnat

Static Analysis

    9648: Fix static analysis for Persistence 2.5 thanks to @derrabus
    9607: PHPStan 1.5.0 thanks to @derrabus
    9590: Ignore deprecation from Persistence thanks to @greg0ire
    9577: Baseline Psalm errors caused by DBAL 3.3.3 thanks to @derrabus

Documentation

    9639: Fix composer install in contributing readme thanks to @ruudk
    9611: Remove "Description of" PHPDoc thanks to @derrabus
    9598: Use correct syntax for external links thanks to @greg0ire


2.11.2 - 09 Mar 2022

    Total issues resolved: 0
    Total pull requests resolved: 21
    Total contributors: 12

Bug

    9574: Make sure MemcachedAdapter is supported before tring to use it thanks to @flack
    9537: Make error message suggestion accurate thanks to @kiler129
    9523: Bring FilterCollection to a "clean" state after hash computation thanks to @mpdude
    9457: PDO is not a required extension thanks to @derrabus
    9452: Check requirements for metadata drivers thanks to @derrabus

Documentation

    9569: Fixing :doc: link thanks to @ThomasLandauer
    9563: Remove reference to removed class thanks to @greg0ire
    9555: Adding PHP attributes thanks to @ThomasLandauer
    9513: Fix syntax typo in attributes reference in documentation thanks to @Einenlum
    9487: Fix #&#91;DiscriminatorMap&#93; params thanks to @steveclifton
    9446: Remove trailing underscore thanks to @greg0ire

Static Analysis

    9557: Parser: SimpleArithmeticExpression should return ArithmeticTerm thanks to @janbarasek
    9546: Update baselines for Lexer 1.2.3 thanks to @derrabus
    9504: Fix AbstractQuery::setParameter phpdoc thanks to @dmaicher
    9493: Added "false" value to $columnPrefix type declaration. thanks to @DmytryHo
    9491: PHPStan 1.4.6, Psalm 4.20.0 thanks to @derrabus

CI

    9539: Drop minor version number thanks to @greg0ire
    9470: Run Postgres 14 and MariaDB 10.6 in CI thanks to @derrabus

Test Suite

    9526: Make creating test models more straightforward and revert to swallowing exceptions thanks to @greg0ire
    9519: Trigger the desired code path thanks to @lcobucci
    9482: Run tests with stricter error handling thanks to @derrabus


2.11.1 - Jan 30, 2022

    Total issues resolved: 1
    Total pull requests resolved: 18
    Total contributors: 13

Test Suite

    9442: Adapt test logic to PHP and SQLite II thanks to @greg0ire
    9425: Ignore PHPUnit result cache everywhere thanks to @derrabus
    9414: Move UnderscoreNamingStrategyTest to correct namespace thanks to @derrabus

CI

    9440: Added php 8.1 to CI thanks to @sir-kain

Static Analysis

    9438: Psalm 4.19.0, PHPStan 1.4.3 thanks to @derrabus
    9415: Added class-string typehint on $targetEntity thanks to @hc-jworman
    9398: Fix type on loadCacheEntry thanks to @derrabus
    9393: Update baselines for DBAL 3.3 thanks to @derrabus
    9385: PHPStan 1.4.0 thanks to @derrabus

Bug

    9419: Fix support for PHP 8.1 enums in embedded classes thanks to @HypeMC
    9410: Allow DiscriminatorColumn with length=0 thanks to @bcremer
    9382: Expose enumType to DBAL to make native DB Enum possible thanks to @javer
    9381: [GH-9380] Bugfix: Delegate ReflectionEnumProperty::getAttributes(). thanks to @beberlei and @ezkimo
    9384: Allow using Enum from different namespace than Entity thanks to @javer

Documentation

    9390: Introduce __unserialize behaviour in docs thanks to @SenseException
    9386: Corrected ORM version and added missing dependency thanks to @mahakaal
    9357: Add detach as of list cascade-all operations thanks to @andrew-demb
    9311: Accessing private properties and methods from the same class is forbidden thanks to @olsavmic


2.11.0 - Jan 12, 2022

    Total issues resolved: 2
    Total pull requests resolved: 35
    Total contributors: 11

Documentation

    9368: Fix doc blocks on ID generators thanks to @derrabus
    9364: Update branch metadata for 2.11 thanks to @derrabus
    9328: Document return type of getEntityState() thanks to @derrabus
    9241: Support for nesting attributes with PHP 8.1 thanks to @beberlei
    9174: AttributeOverride annotation is also an attribute but that is not reachable thanks to @brzuchal
    9118: Generated/Virtual Columns: Insertable / Updateable thanks to @mehldau

Improvement

    9356: Remove the composer/package-versions-deprecated package thanks to @derrabus
    9340: Use the readonly annotation thanks to @derrabus
    9319: Document LockMode enums thanks to @derrabus
    9316: Support readonly properties for read operations thanks to @derrabus
    9312: Leverage generic ObjectManagerDecorator thanks to @derrabus
    9275: Fix type errors in AbstractQuery and QueryBuilder thanks to @derrabus
    9274: Fix type errors in AnnotationDriver thanks to @derrabus
    9273: Fix docblocks on nullable EM properties thanks to @derrabus
    9271: Fix return types of cache interfaces thanks to @derrabus
    9203: Drop support for DBAL 3.1 thanks to @derrabus
    9202: Add SchemaIgnoreClasses property thanks to @simPod

Bug

    9355: Relax assertion to include null as possible outcome thanks to @derrabus

Deprecation

    9327: Added runtime deprecation to UnitOfWork::commit() and clear() thanks to @derrabus
    9309: [GH-9277] deprecate php driver thanks to @beberlei
    9249: Deprecate Setup::registerAutoloadDirectory() thanks to @derrabus
    9211: Add deprecation hints to orm:convert-mapping command thanks to @derrabus
    9206: Add missing deprecations for YAML metadata mapping thanks to @derrabus
    9074: Deprecate ensureProductionSettings() thanks to @derrabus
    9072: Deprecate AbstractHydrator::hydrateRow() thanks to @derrabus

New Feature

    9326: Add support for custom types with requireSQLConversion and ResultSetMappingBuilder::generateSelectClause() thanks to @kimhemsoe
    9304: Add support for PHP 8.1 enums. thanks to @beberlei
    9149: Detect enums and use type string (PHP 8.1 only) thanks to @Nek-
    9133: Adding a setup helper for attribute metadata config thanks to @judahnator

Deprecation,Improvement

    9325: Use EntityManagerInterface in type declarations thanks to @derrabus
    9322: PSR-6 second level cache thanks to @derrabus

CI

    9272: Regenerate Psalm baseline thanks to @derrabus
    9267: Enable UnusedUse sniff again thanks to @derrabus

Bug,DQL

    9266: Improve compatibility with Doctrine DBAL 4 thanks to @morozov

DQL,New Feature

    9242: Allow arithmetic expressions within IN operator thanks to @webda2l

DQL,Improvement

    6476: Allow arithmetic expressions within IN operator thanks to @astepin


2.10.5 - Jan 12, 2022

    Total issues resolved: 0
    Total pull requests resolved: 21
    Total contributors: 7

    9360: Add errors caused by the lexer update to the baselines thanks to @derrabus
    9344: Remove Psalm job for analyzing DBAL 2 thanks to @greg0ire
    9330: Fix broken type declaration thanks to @derrabus
    9295: Fix return type thanks to @derrabus
    9294: Fix union type on QueryExpressionVisitorTest::testWalkComparison() thanks to @derrabus
    9286: Whitelist composer plugins used by this repository thanks to @derrabus
    9283: Allow symfony/cache 6 thanks to @derrabus

CI

    9349: Update Psalm baseline for Persistence 2.3 thanks to @derrabus
    9341: PHPStan 1.3.3, Psalm 4.18.1 thanks to @derrabus
    9324: Enable some previously disabled PHPCS rules thanks to @derrabus
    9317: Run PHP CodeSniffer on PHP 8.1 thanks to @derrabus
    9315: Psalm 4.17.0 thanks to @derrabus
    9314: Run static analysis with language level PHP 8.1 thanks to @derrabus
    9303: Bump PHPStan & Psalm thanks to @derrabus

Bug

    9339: Fix field mapping typing thanks to @greg0ire
    9285: Fix XML export for change-tracking-policy thanks to @Fedik
    9244: Put actual value instead of index inside $originalEntityData thanks to @Feolius

Improvement

    9318: Document PHPUnit mocks with intersection types thanks to @derrabus

Documentation

    9281: Better explain limitations of DQL "DELETE" thanks to @mpdude
    9268: Fix WhereInWalker description to better describe the behaviour of this class thanks to @LuigiCardamone
    9243: Removing list "Lifecycle Events" thanks to @ThomasLandauer


2.10.4 - Dec 20, 2021

Bugs fixed

    Fix making columns optional in indexes xml schema as they can be defined via fields now by @alexander-schranz in #9210
    Added psalm param to abstract addFilterConstraint by @KevinVanSonsbeek in #9229
    Fix SchemaValidator with abstract child class in discriminator map - Enforcing Abstract Entity in DiscriminatorMap is important for some operations by @olsavmic in #9262
    Make PrimaryReadReplicaConnection enforcement explicit by @beberlei in #9239

Maintenance

    Remove fallbacks for old doctrine/annotations versions by @derrabus in #9235
    PHPCS 3.6.2, Psalm 4.15.0 by @derrabus in #9247

Documentation

    [Documentation] Events Overview Table: Adding "Passed Argument" column by @ThomasLandauer in #9184
    Docs: consistency for FQCN, spacing, etc by @andrew-demb in #9232
    [docs] Fix wording for attributes=>parameters. by @beberlei in #9265
    Docs: use canonical order for phpdoc tags, add missed semicolon by @andrew-demb in #9190


2.10.3 - Dec 2, 2021

    Total issues resolved: 0
    Total pull requests resolved: 20
    Total contributors: 13

Documentation

    9218: Fix typo assumptio--> assumption thanks to @Florian-Varrin
    9166: Remove reverted bc break thanks to @alexander-schranz
    9161: Adding Attributes code block thanks to @ThomasLandauer
    9159: Merging Lifecycle Callbacks code samples for PHP + XML + YAML thanks to @ThomasLandauer
    9158: Removing paragraph on consts thanks to @ThomasLandauer
    9156: Adding link to Embeddables thanks to @ThomasLandauer
    9154: Fixing more links thanks to @ThomasLandauer
    9152: Add doctrine/dbal to project composer.json thanks to @chasen
    9151: Fixing links in overview table thanks to @ThomasLandauer
    9150: Fix markup for variable names thanks to @pwaring
    9143: Document BC break thanks to @greg0ire
    9131: Overview table for events: Jump links thanks to @ThomasLandauer

CI

    9212: Suppress Psalm's ReservedWord errors thanks to @derrabus
    9195: Use equal to instead of equal of in assertSqlGeneration() thanks to @simPod
    9204: Psalm 4.13.1, PHPStan 1.2.0 thanks to @derrabus
    9146: Remove old use statements thanks to @chapterjason

Bug

    9198: Add a psalm type for field mapping thanks to @laryjulien
    9147: return 0 when there's no metadata to process thanks to @wickedOne
    9153: Infer type from field instead of column thanks to @armenio

Improvement

    9123: Add XSD "orm:columntoken" type in order to support reserved words in column names thanks to @phansys


2.10.2 - Oct 21, 2021

    Total issues resolved: 0
    Total pull requests resolved: 17
    Total contributors: 11

Bug

    9098: Honor INDEX BY construct in Query::toIterable thanks to @ajgarlag
    9096: Fix SchemaValidator with abstract child class in discriminator map thanks to @BenMorel

Improvement

    9108: [Psalm] always true/false conditions thanks to @orklah

CI

    9114: Directly reference upstream CS workflow thanks to @greg0ire
    9139: Upgrade workflows to 1.1.1 thanks to @greg0ire
    9126: Explicitly pass secrets thanks to @greg0ire
    9115: PHP CodeSniffer 3.6.1 thanks to @derrabus

Documentation

    9138: Fix the upgrade guide for 2.8 changes thanks to @stof
    9128: Explaining the two major ways to register an event v2 thanks to @ThomasLandauer
    9113: Fix typo & minor grammar issues in dql-custom-walkers.rst thanks to @PaulCapron
    9107: Remove the twitter #doctrine2 hashtag refference thanks to @BackEndTea
    9102: Explaining the two major ways to register an event thanks to @ThomasLandauer
    9097: Explaining the two major ways to register an event thanks to @ThomasLandauer
    9091: Add "@method" annotation for wrapInTransaction() method at EntityManagerInterface thanks to @phansys
    9039: Overview table for events thanks to @ThomasLandauer

BC-break revert

    9136: Revert "Removing all the occurence of any" thanks to @greg0ire


2.10.1 - Oct 5, 2021

    Total issues resolved: 1
    Total pull requests resolved: 3
    Total contributors: 3

Bug

    9090: Add integer cast in setFirstResult methods of Query and QueryBuilder thanks to @Knallcharge
    9089: Return value of Doctrine\ORM\Query::getFirstResult() must be of the type int or null, string returned thanks to @Knallcharge
    9079: Add integer cast in setMaxResults methods of Query and QueryBuilder thanks to @mitelg

Documentation

    9084: Update phpdoc comment - association-mapping.rst thanks to @annechko


2.10.0 - Oct 3, 2021

    Total issues resolved: 4
    Total pull requests resolved: 56
    Total contributors: 9

CI

    9057: Add PHP 8.1 to CI thanks to @derrabus
    8874: Build with DBAL 3 thanks to @greg0ire

Improvement

    9056: Remove calls to ForeignKeyConstraint::getColumns() thanks to @derrabus
    8996: Support for PSR-6 result caches thanks to @derrabus
    8962: Stop swallowing exceptions thanks to @greg0ire
    8954: Fix references to deprecated DBALException thanks to @derrabus
    8953: Don't call deprecated getSchemaManager() thanks to @derrabus
    8952: Drop more usages of SimpleAnnotationReader thanks to @greg0ire
    8949: Make mock layer compatible with DBAL 3 thanks to @derrabus
    8946: Support for DBAL 3's platform classes thanks to @derrabus
    8945: Document possibly-null member variables thanks to @greg0ire
    8944: Remove references to Type::DATETIME thanks to @derrabus
    8941: Remove calls to fixSchemaElementName() thanks to @derrabus
    8939: Remove calls to Driver::getName() thanks to @derrabus
    8938: Bump Psalm to 4.9.3 thanks to @derrabus
    8935: Remove calls to deprecated Connection methods thanks to @derrabus
    8928: Add types to EM::wrapInTransaction() thanks to @simPod
    8915: Address Type deprecation messages thanks to @basseta
    8889: doctrine/dbal v3 - Make sure that values passed to are not null thanks to @scyzoryck
    8870: Remove calls to prefersSequences() thanks to @derrabus
    8836: Make implicit type casts explicit thanks to @greg0ire
    8794: Fix deprecated DBAL calls thanks to @derrabus
    8793: Backport slamdunk's work thanks to @greg0ire
    8792: Backport malukenho's work thanks to @greg0ire
    8692: Split the ORMException class thanks to @greg0ire

Bug

    9050: fix: prevent TypeError in QueryBuilder joins thanks to @dunglas
    8943: Add missing EntityManagerInterface argument to callable that is being passed to EM::wrapInTransaction() thanks to @simPod

Deprecation

    9046: Deprecate isIdGeneratorTable and isIdentifierUuid thanks to @derrabus
    8820: [GH-8818] Deprecate entity namespace short aliases. thanks to @beberlei
    9004: Use PSR-6 for accessing the query cache thanks to @derrabus
    9002: Switch cache configuration to PSR-6 thanks to @derrabus
    8984: Remove unnecessary method&#95;exists() checks thanks to @derrabus
    8964: DBAL 3 thanks to @derrabus
    8957: Only wire ConnectionHelper if it's available thanks to @derrabus
    8950: PHPStan 0.12.96 thanks to @derrabus
    8948: Remove ImportCommand from console thanks to @derrabus
    8947: Remove UUID generator strategy from fixtures thanks to @derrabus
    8942: Remove remaining call to prefersSequences() thanks to @derrabus
    8940: Remove calls to EchoSQLLogger thanks to @derrabus
    8937: Don't pass false as lock mode to appendLockHint() thanks to @derrabus
    8936: Reset Psalm baseline thanks to @derrabus
    8934: Remove calls to AbstractPlatform::getSQLResultCasing() thanks to @derrabus
    8932: Drop support for generating json array fields thanks to @greg0ire
    8898: Throw exception NotSupported Exception for UuidGenerator with doctr… thanks to @scyzoryck
    8887: Move getSQLResultCasing code into ORM from DBAL thanks to @beberlei
    8862: Change $this->assert* to self::assert* in unit tests thanks to @carnage
    8841: Enable strict mode thanks to @greg0ire and @beberlei
    8780: Fix usages of deprecated DBAL constants thanks to @derrabus
    8419: Introduce EntityManagerInterface#wrapInTransaction() thanks to @simPod
    8961: Deprecate / remove TABLE id generator strategy thanks to @greg0ire

Documentation

    9043: Update documentation regarding caching thanks to @derrabus

New Feature

    8919: feat(ScalarColumnHydrator): added ScalarColumnHydrator to get flat array results from query for single column thanks to @bhushan

Backporting

    8859: Drop tools/sandbox thanks to @greg0ire
    8844: Ditch SimpleAnnotationReader thanks to @greg0ire
    8837: Replace spl_object_hash() with spl_object_id() thanks to @greg0ire

BC Break

    8852: Remove possibility to extend the doctrine mapping xml schema with anything thanks to @greg0ire
    8851: Remove unused exceptions thanks to @greg0ire


2.9.6 - Oct 3, 2021

    Total issues resolved: 0
    Total pull requests resolved: 22
    Total contributors: 12

CI

    9058: Run PHP 8.1 CI with stable dependencies thanks to @derrabus
    9006: Add PHP 8.1 to CI thanks to @derrabus
    8979: Bump PHPStan and Psalm thanks to @derrabus

Bug

    9053: Fix locking non-existing entity thanks to @sztyup
    9028: Don't presume one-to-one lookup returned an entity thanks to @gregtyler
    9024: Fix docblock types for some nullable properties thanks to @phansys
    9010: Fix ignoring custom types for PersistentCollection matching() thanks to @sztyup
    9001: Remove Proxy from EntityManagerInterface contract thanks to @derrabus
    9000: Fix class casing and avoid name collisions thanks to @derrabus
    8959: Fix getEntityChangeSet return typehint thanks to @norkunas
    8903: SchemaValidator: Fix mapped superclass missing in discriminator map thanks to @olsavmic

Improvement

    9048: Duplicate testTwoIterateHydrations thanks to @derrabus
    9017: Fix some typehints in QueryBuilder thanks to @norkunas
    9007: Add tests for Query::getQueryCacheDriver() thanks to @derrabus
    8997: Drop unused classes thanks to @greg0ire
    8992: Add extension point for the "embedded" XML node thanks to @phansys
    8981: Restore functional cache tests thanks to @derrabus

Documentation

    9038: Minor change about double The thanks to @Cartman34
    8987: Fix English in note. thanks to @ash-m
    8978: Remove detach deprecation entry in UPGRADE.md thanks to @simonberger
    8960: Fix typo thanks to @inarli
    8435: Minor rewording thanks to @ThomasLandauer


2.9.5 - Aug 23, 2021

    Total issues resolved: 0
    Total pull requests resolved: 2
    Total contributors: 2

Documentation

    8930: Introduce 2.10 to readme thanks to @SenseException

Improvement

    8895: Implement __serialize() and __unserialize() thanks to @derrabus


2.9.4 - Aug 11, 2021

    Total issues resolved: 0
    Total pull requests resolved: 33
    Total contributors: 15

Improvement

    8909: Fix build thanks to @greg0ire
    8905: Add explicit @return type next to #&#91;ReturnTypeWillChange&#93; thanks to @nicolas-grekas
    8899: Regenerate psalm baseline thanks to @simPod
    8892: Bump PHPStan to 0.12.94 thanks to @derrabus
    8847: Adapt tests to new way of wrapping thanks to @greg0ire
    8821: Adapt ignore rules to new version of PHPStan thanks to @greg0ire
    8810: Update Psalm baseline thanks to @greg0ire
    8781: Fix Psalm/PHPStan errors thanks to @derrabus
    8543: Add missing @param and @return PHPDoc attributes thanks to @simonberger

Bug

    8907: Update getAssociationTargetClass phpdoc thanks to @VincentLanglet
    8896: Don't pass null as parameter thanks to @derrabus
    8894: Fix return types for PHP 8.1 thanks to @derrabus
    8872: Fix CI SA failures thanks to @simPod
    8801: Ignore errors about missing ReturnTypeWillChange class thanks to @derrabus
    8800: Fix exception not thrown by "getEntityIdentifier" thanks to @jderusse
    8784: Undeprecate targetEntity omission for some types thanks to @greg0ire
    8769: Make templating Psalm-specific thanks to @greg0ire
    8402: Resolving target entity in discriminator map omits fields from subtables thanks to @mpdude

Documentation

    8883: Fix getting-started example by including cache thanks to @dopeh
    8860: Fix typo in "Working with Objects" thanks to @t-richard
    8830: Adding fields to Index thanks to @ThomasLandauer
    8823: Referenced new support for PHP8 attributes thanks to @fridde
    8795: Update session examples in docs thanks to @SenseException
    8778: Link to correct section thanks to @jmontoyaa
    8777: Spell "entity" properly thanks to @jmontoyaa

Failing Test

    8855: Failing test for GH8443 thanks to @piowin

Backporting

    8825: Backport Github issue and PR templates thanks to @greg0ire

Backporting,Documentation

    8814: Proposed corrected typo in demo code. thanks to @greg0ire
    8791: Backport docs batch 2 thanks to @greg0ire
    8790: Backport docs batch thanks to @greg0ire
    8789: Use a more concrete, less confusing example thanks to @greg0ire

Backporting,CI

    8806: Resurrect phpbench thanks to @greg0ire

Backporting,Improvement

    8798: Remove hack to access class scope inside closures thanks to @greg0ire


2.9.3 - Jun 14

    Total issues resolved: 2
    Total pull requests resolved: 5
    Total contributors: 5

    8758: Restore bc for annotations thanks to @greg0ire
    8756: fix: handle repeatable attributes thanks to @ph-fritsche
    8753: Edge-case regression with 2.9.x thanks to @albe
    8742: Add ReturnTypeWillChange to ReflectionEmbeddedProperty thanks to @derrabus
    8734: Fix metadata constructor inference by phpstan thanks to @VincentLanglet

Bug

    8740: Make ClassMetadata covariant thanks to @VincentLanglet


2.9.2 - May 31, 2021

    Total issues resolved: 1
    Total pull requests resolved: 5
    Total contributors: 6

    8732: [GH-8723] Remove use of nullability to automatically detect nullable status thanks to @beberlei and @jmsche
    8724: Add automatic type detection for Embedded. thanks to @Warxcell
    8708: Fix ClassMetadaInfo template inference thanks to @VincentLanglet

Bug

    8722: Fix metadata cache compatibility layer thanks to @alcaeus
    8710: Handle generic parameters in UnitOfWork thanks to @franmomu


2.9.1- May 24, 2021

    Total issues resolved: 1
    Total pull requests resolved: 1
    Total contributors: 2

    8713: Stop using Webmozart to fix error in Query/Parser thanks to @peter-gribanov
    8711: Attempted to load class "Assert" thanks to @ben29


2.9.0 - May 24, 2021

    Total issues resolved: 18
    Total pull requests resolved: 30
    Total contributors: 18

Changes

    8691: Check for use of deprecated API with Psalm thanks to @alcaeus
    8678: [Gh-8589] A new approach to non-nullable typed associations for BC thanks to @beberlei
    8677: [GH-8676] Allow nested annotations to work without parents as attributes thanks to @beberlei and @Nemo64
    8671: Reflect that default EntityManager is not always named default thanks to @simPod
    8646: [GH-8327] Make EntityManagerProvider compatible with expected DoctrineBundle usage thanks to @beberlei and @PowerKiKi
    8642: How to create schema using Schema tool in v2.9.x? thanks to @simPod
    8629: Fields for unique constraints thanks to @beberlei and @alexander-schranz
    8613: Reintroduce PHP 7.1 support thanks to @beberlei
    8589: Fix typed properties for default metadata (#7939) thanks to @Lustmored and @beberlei
    8553: Bump doctrine/deprecations to at least v0.5.3 thanks to @beberlei
    8517: [GH-8458] Properly deprecate ConvertDoctrine1Schema thanks to @beberlei
    8472: [GH-8471] Deprecate Partial DQL syntax and forcing partial loads. thanks to @beberlei
    8466: Introduce doctrine/deprecations thanks to @beberlei
    8439: Use typed properties for default metadata for #7939 thanks to @Lustmored and @beberlei
    8438: DDC-2076 Remove useless join over target table of ManyToMany relationship thanks to @plfort
    8417: Restrict EntityManagerInterface::getRepository thanks to @VincentLanglet
    8382: [GH-6396] Allow custom hydrators access to meta columns thanks to @beberlei
    8378: [GH-6578] Add validation that inherited entity class is mapped in discriminator. thanks to @beberlei
    8377: Add Doctrine\ORM\Query\Expr::mod() thanks to @beberlei and @holtkamp
    8375: Support for Array parameters in SQL filters thanks to @beberlei and @doctrinebot
    8357: Add psalm annotation to ArrayCollection of Parameters thanks to @snapshotpl
    8266: [GH-8265] Prototype for Attribute Metadata Driver thanks to @beberlei
    7936: [GH-5202] Implement Query::HINT_READ_ONLY flag thanks to @beberlei and @doctrinebot
    7918: Add support for INDEX BY an associated entity (2.8.x) thanks to @andrews05 and @crtl

Improvement

    8672: Allow installing doctrine/cache 2.0 thanks to @alcaeus
    8548: Adding details to types in PHPDoc thanks to @orklah
    8544: Add type declarations where backwards-compatible thanks to @greg0ire
    8380: [GH-7128] Improve OneToManyRequiresMappedBy Exception message thanks to @beberlei and @jakumi

Deprecation,New Feature

    8651: Introduce PSR-6 for metadata caching thanks to @alcaeus

Deprecation

    8592: Deprecated Named Native and DQL Queries thanks to @beberlei
    8524: [GH-8327] Deprecate EntityManagerHelper for a provider abstraction. thanks to @beberlei and @PowerKiKi
    8383: Deprecated notify change tracking policy thanks to @beberlei
    8381: [GH-6855] Prevent unsupported lifecycle callback mapping on embedded classes. thanks to @beberlei

New Feature,Question

    7762: Psalm support thanks to @zerkms


2.8.5 - May 21, 2021

    Total issues resolved: 0
    Total pull requests resolved: 15
    Total contributors: 9

CI

    8701: Allow Symfony 6.0 thanks to @jderusse

Bug

    8700: Fix undefined index thanks to @deguif
    8604: Fix psalm param typehint for OneToManyAssociationBuilder::setOrderBy method thanks to @janatjak
    8566: SimpleObjectHydrator: skip unsuit custom type before convert it thanks to @tweet9ra
    8699: Fix some static analysis issues thanks to @greg0ire
    8698: Fix cache deprecation thanks to @deguif
    8649: ConvertDoctrine1Schema: Fix Doctrine 1 notnull field import thanks to @aweelex
    8644: Describe return types more accurately thanks to @greg0ire
    8600: Remove internal tag from computeChangeSet thanks to @VincentLanglet
    8594: Ensure test is suffixed with Test thanks to @greg0ire

Improvement

    8636: Update ignore rules to reflect current situation thanks to @greg0ire
    8634: upgrade static tools thanks to @orklah
    8627: Add baseline files for static analyzers thanks to @greg0ire
    8617: Upgrade to doctrine/coding-standard 9 thanks to @greg0ire
    8552: Fix remaining warnings from the phpunit9 upgrade thanks to @acoulton


2.8.4 - Apr 6, 2021

    Total issues resolved: 1
    Total pull requests resolved: 3
    Total contributors: 4

BC Break,Bug

    8595: Statement in Where-Clause are not wrapped in brackets anymore thanks to @LinkingYou

Regression

    8591: Return case insensitive check thanks to @DmitriiBezborodnikov

Bug

    8590: Fix phpdoc of ClassMetadataInfo::getIdentifierValues thanks to @VincentLanglet
    8586: Additional psalm param typehint for orderBy argument in findBy method thanks to @KartaviK


2.8.3 - Apr 1, 2021

    Total issues resolved: 4
    Total pull requests resolved: 10
    Total contributors: 12

    8575: Exception when calling toIterable without parameters thanks to @flack
    8533: Add test coverage for passing optimistic lock version as string thanks to @acoulton
    8507: Address move away from master thanks to @greg0ire
    8384: [GH-6394] Bugfix: IdentifierFlattener support for association non-object values. thanks to @beberlei and @tobiasstadler

Bug

    8564: Adding DIR to include statement to fix issue with pathing thanks to @cybercitizen7
    8508: Proposed fix for #8499 thanks to @diego-ninja
    8495: Fix bug when using Result Cache with Query::toIterable thanks to @Warxcell
    8493: Relax assertion thanks to @greg0ire and @martinolmr
    8483: Fix single scalar hydrator memory leak on exception thanks to @olsavmic
    8453: Fixes parenthesis when \n is involved thanks to @Warxcell

BC Break,Bug

    8503: Incompatibility between getArrayResult() new type hint and use of indexBy() thanks to @benjamintoussaint

Improvement,Missing Tests

    7315: Fix memory leak in AbstractHydrator thanks to @zlikavac32


2.8.2 - Feb 17, 2021

    Total issues resolved: 4
    Total pull requests resolved: 10
    Total contributors: 11

Documentation

    8420: Set 2.8 as current supported version thanks to @SenseException

Bug

    8401: Identifier type is not set when many2many relations are deleted thanks to @yoshz
    8376: [GH-7486] Bugfix: failing when clearing empty cache is wrong semantics thanks to @beberlei
    8374: Fix invalid psalm annotation thanks to @micheh
    8328: Infer datetime&#95;immutable DBAL type for \DateTimeImmutable instance parameters thanks to @vhenzl
    8467: [GH-8410] Fix memory leak in new toIterable and state bug. thanks to @beberlei and @simonberger
    8448: Relax contract of EntityListenerResolver so it doesn't require class name thanks to @ostrolucky
    8426: Fix --complete flag in orm:ensure-production-settings command thanks to @alexander-schranz
    8412: fixed memory leak while iterating results thanks to @stlrnz
    8392: [GH-8231] Bugfix: Missed dirty check synchronization check. thanks to @beberlei and @skurfuerst


2.8.1 - Dec 04, 2020

    Total issues resolved: 4
    Total pull requests resolved: 2
    Total contributors: 5

    8371: Fix ambiguous case where an entity is also a Traversable thanks to @beberlei
    8370: [GH-8366] Catch additional Persistence MappingException thanks to @beberlei and @garak
    8369: The class 'DateTime' was not found in the chain configured namespaces App\Entity since update to doctrine/orm 2.8 thanks to @fabien007
    8367: Break in 2.8: The class 'DateTime' was not found in the chain configured namespaces thanks to @kerbert101
    8365: Break in 2.8: Cannot bind QueryBuilder parameters with \IteratorAggregate entities: leads to incorrect SQL generated code thanks to @ambroisemaupate


2.8.0 - Dec 04, 2020

    Total issues resolved: 6
    Total pull requests resolved: 10
    Total contributors: 13

    8332: Upgrade Psalm to v4.1.1 thanks to @beberlei
    8291: Validate Embeddable associations in SchemaValidator thanks to @kejwmen
    8137: Deprecation notices from doctrine/inflector 1.4 thanks to @W0rma
    7885: Introduce getIterable() on AbstractQuery thanks to @simPod

New Feature

    8140: add possibility to use sql comments in the DQL syntax thanks to @philippe-levan

Documentation

    8130: Improve CLI config documentation thanks to @gbirke

Hacktoberfest,Improvement

    8069: Convert PHPUnit @expectedException into method call thanks to @beberlei

Deprecation

    7955: EntityManagerInterface extends deprecated Doctrine\Common\Persistence\ObjectManager thanks to @vanoostrum
    7928: Deprecate EntityRepository#clear() thanks to @kokspflanze and @lcobucci

CI,Improvement

    7948: Add stage that runs before Test to allow fast failures on Sqlite/phpcs thanks to @beberlei

Requires merge/review

    7946: Throw OptimisticLockException when connection::commit() returns false thanks to @chosroes

Improvement

    7941: Allow DQL functions to specify return type thanks to @Grafikart


v2.7.5 - Dec 04, 2020

    Total issues resolved: 0
    Total pull requests resolved: 2
    Total contributors: 2

    8348: [GH-8229] Prevent Illegal Inheritance Override thanks to @beberlei
    8329: Fix SQL alias generation regression for simple inheritance thanks to @rogregoire


v2.7.4 - Oct 11, 2020

    Total issues resolved: 0
    Total pull requests resolved: 8
    Total contributors: 8

    8286: psalm fixes thanks to @orklah
    8150: Infer return type information with Psalter thanks to @greg0ire
    8107: Fix QueryBuilder::getParameter() on parameter names with colons thanks to @tom93

Bug

    8277: Fix OrderByItem parser to proceed with SimpleArithmetic expression before function thanks to @ipernet
    8234: Fix for bug #8229 (id column from parent class renamed in child class) thanks to @cziegenberg
    8122: Prohibits class typo in the discriminator map thanks to @gquemener

Documentation

    8223: Change preferred cache driver for metadata and query caches thanks to @bcremer
    8109: Add alert to "avoid persisting detached entities" thanks to @Pictor13


v2.7.3 - May 27, 2020

    Total issues resolved: 1
    Total pull requests resolved: 5
    Total contributors: 4

    8158: Allow doctrine/common 3 and doctrine/persistence 2 thanks to @greg0ire
    8062: Convert PHP to SQL for new object expression thanks to @jeroenvdheuvel
    7989: Fix issues detected by psalm on 2.7 thanks to @orklah

BC Break,Bug

    8138: Revert changes to embeddable mapping in 2.7 thanks to @beberlei

Deprecation,Improvement

    7953: Address deprecations from persistence thanks to @greg0ire


v2.7.2 - Mar 21, 2020

    Total issues resolved: 4
    Total pull requests resolved: 5
    Total contributors: 8

Documentation

    8041: Improve documentation about naming strategy usage thanks to @RosemaryOrchard

Bug

    8031: Undefined alias for Embeddable in 2.7.1 thanks to @vicdelfant
    8030: Problem with Proxies on PHP 7.4.2 with typed properties thanks to @bizley
    8023: Put into cache using root entity name thanks to @peterkeatingie
    7969: Child entity not retrieved from array cache thanks to @peterkeatingie
    8055: Fix regression in 2.7.1 when mysqli is used with discriminator column that is not a string thanks to @mpdude
    8050: [GH-7633] disallow cache partial objects thanks to @beberlei
    8036: Fix inherited embeddables and nesting after AnnotationDriver change #8006 thanks to @malarzm
    7633: Partial objects get cached and break "actual" objects thanks to @Amunak


v2.7.1 - Feb 15, 2020

A notable change of this version is the introduction of ocramius/package-versions to provide version information, most importantly when using the
Doctrine CLI. That also means that you cannot rely on Doctrine\ORM\Version::VERSION constant anymore going forward it will always point to 2.7.1-DEV.

    Total issues resolved: 4
    Total pull requests resolved: 11
    Total contributors: 11

Bug

    8006: Make Embeddable not transient thanks to @malarzm
    7987: [GH-7982] no sql executor leads to parse error thanks to @beberlei
    7983: Null offset access in DQL parser thanks to @ntzm
    7974: [GH-7505] Bug in SimpleObjectHydrator when using inheritance with same field thanks to @beberlei and @m-r-r
    7940: [GH-7864] Bugfix in PersistentCollection::removeElement for EXTRA_LAZY. thanks to @beberlei
    7934: Fix Trying to access array offset on value of type null thanks to @BenMorel
    7957: Fix version information thanks to @lcobucci

Documentation

    7973: Just a micro grammar update. thanks to @DocFX
    7619: Update improving-performance.rst to reflect current state of PHP ecosystem thanks to @Majkl578
    7500: Prefer PhpFileCache for caching docs thanks to @shadowhand

CI,Deprecation

    7956: Ignore Doctrine\Common\Persistence\ObjectManagerDecorator deprecation thanks to @lcobucci

Bug,Regression

    7937: Revert SchemaTool change to check for foreign key support thanks to @beberlei and @fmathieu1

BC Break,Bug

    7875: Whilelist existing assets we know about from metadata in SchemaTool::getUpdateSchemaSql() thanks to @nicolas-grekas


v2.7.0 - Nov 19, 2019

This release solves Symfony 5.0 compatibility issues, some small improvements, and adds various deprecation notices.

Please read carefully the upgrade to 2.7 notes to know more about the reasons and how to fix the deprecation messages.

    Total issues resolved: 1
    Total pull requests resolved: 15
    Total contributors: 10

Deprecation

    7911: Be explicit about which Doctrine package in message thanks to @lcobucci
    7909: Add deprecation messages thanks to @lcobucci
    7901: Add deprecation warnings for 2.7.x thanks to @lcobucci
    7701: Split and deprecate AbstractQuery#useResultCache() thanks to @someniatko

CI

    7904: Make sure composer files are valid thanks to @greg0ire
    7600: [2.7] CI: Test against PHP 7.4snapshot instead of nightly (8.0) thanks to @Majkl578

Improvement

    7876: Fix compat of commands with Symfony 5 thanks to @nicolas-grekas
    7829: Skip Paginator LIMIT subquery and WHERE IN if query do not have LIMIT thanks to @Seb33300
    7723: Allow Symfony 5.0 thanks to @nicolas-grekas
    7710: Prettified arrays in tool command orm:mapping:describe thanks to @rtek
    7340: Fix config template for PHPUnit >= 7.2 thanks to @guilliamxavier

BC Break,Improvement

    7863: Paginator: Skip limit subquery if not required thanks to @Seb33300

Documentation

    7382: Update homepage thanks to @Majkl578

Bug

    7326: Cherry-pick #7307 to fix remaining usages of deprecated ClassLoader and Inflector from doctrine/common thanks to @nicolas-grekas
    7079: Fix getJoinTableName for sqlite with schema attribute thanks to @mairo744

BC Break,Deprecation,Improvement

    6803: Deprecation of EntityManager copy method thanks to @SenseException


v2.6.6 - Nov 18, 2019

This release solves the violation of our BC guarantees, we apologise for impacting existing software.

    Total issues resolved: 0
    Total pull requests resolved: 1
    Total contributors: 1

BC Break,Bug

    7908: Fix BC-break on underscore naming strategy thanks to @lcobucci


v2.6.5 - Nov 18, 2019

This release fixes some important bugs (including a few regressions related to the paginator component and cleaning collections when using DEFERRED_EXPLICIT).

It also marks the EOL for the v2.6.x series since we'll soon be releasing v2.7.0.

    Total issues resolved: 9
    Total pull requests resolved: 23
    Total contributors: 24

Bug,Regression

    7905: [Paginator] Fix type conversion during hydration of pagination limit subquery thanks to @akorz, @lcobucci, and @ostrolucky
    7862: Using ArrayCollection-&gt;clear over an entity marked to be persisted, doesn't create corresponding DELETE statements thanks to @ferrastas and @ostrolucky
    7861: Delete statements will not be created using clear thanks to @ferrastas

Bug

    7869: UnitOfWork::clear() misses $eagerLoadingEntities thanks to @BenMorel
    7865: #7837 paginate with custom identifier types even with enabled DQL query cache thanks to @Ocramius
    7856: Fix underscore naming strategy behaviour with numbers thanks to @lcobucci
    7855: Numbers in a string using underscore naming strategy thanks to @vuras
    7850: Don't merge PersistentCollection orderBy with criteria in matching() thanks to @nlx-lars
    7842: #7841 SchemaTool generates extra diff for platforms without FK support thanks to @vpArth
    7764: #7763 escape quotes in field comments thanks to @guillaume-a
    7763: "doctrine:mapping:import" does not escape quotes in field comments thanks to @guillaume-a
    7684: only replace '_id' at end of columnName thanks to @rharink

CI

    7889: Use quoted collation declaration when available, fixes test suite when running against DBAL 2.10+ thanks to @ajgarlag

Documentation

    7884: [Documentation] Advanced field value... - missing entity alias thanks to @rogeriolino
    7880: Update documentation to recommend DQL over QueryBuilder when possible thanks to @kuraobi and @javiereguiluz
    7871: AbstractQuery::getSingleScalarResult() throws exception when no result thanks to @BenMorel
    7858: Invalid version in Doctrine\ORM\Version::VERSION thanks to @guillaumesmo
    7849: Mention SQL logger impact on batch processing thanks to @axi
    7838: Fix the name of ClassMetadata in documentation thanks to @samnela
    7768: Fix EntityManagerHelper's documentation (it can't accept an array of paths) thanks to @mickaelandrieu
    7727: [doc] Finish incomplete definition of class UTCDateTimeType thanks to @madand
    7671: Added missing "the" thanks to @jschaedl
    7667: Fixes example One-To-One, Self-referencing thanks to @jschaedl
    7443: Added doc about exception in Query#getOneOrNullResult() thanks to @naitsirch and @Mynyx
    7298: Add a missing type in Query::getFirstResult PHPDoc thanks to @dunglas

Improvement

    7851: Remove not used variable $reflFieldValue in ObjectHydrator thanks to @peter-gribanov


v2.6.4 - Sep 23, 2019

This release fixes many bugs (including a performance regression) and makes the v2.x series compatible with PHP 7.4.

    Total issues resolved: 11
    Total pull requests resolved: 32
    Total contributors: 30

Improvement

    7785: Fix "access array offset on value of type null" PHP 7.4 notices thanks to @mlocati
    7142: Rename this repository to doctrine/orm thanks to @greg0ire

Bug

    7821: Bug: #7820 paginator ignores dbal type conversions in identifiers thanks to @Ocramius
    7778: Guard L2C regions against corrupted data thanks to @umpirsky
    7767: PersistentCollection::matching() does not respect the collections native sorting thanks to @stephanschuler
    7766: Respect collection orderBy meta when matching() thanks to @stephanschuler
    7761: Do not modify UOW on PersistentCollection::clear() when owner has DEFFERED_EXPLICIT change tracking policy thanks to @paxal
    7750: Fix incorrect return of null values in L2C thanks to @AlexSmerw
    7737: Fix MEMBER_OF comparison when using criteria in query builder thanks to @Smartel1
    7735: Null in fields value in Cached Entity several times on day on high-load project. thanks to @AlexSmerw
    7630: Fix #7629 - scheduledForSynchronization leaks memory when using @ORM\ChangeTrackingPolicy(&quot;DEFERRED&#95;EXPLICIT&quot;) thanks to @yethee
    7528: Prevent UnitOfWork lookup for DBAL types specified in Doctrine\ORM\Query#setParameter() thanks to @Ocramius
    7322: JoinedSubclassPersister pass identifier types on delete thanks to @dennisenderink and @fred-jan
    7266: Call to a member function resolveAssociationEntries() on boolean {"detail":"[object] (Symfony\Component\Debug\Exception\FatalThrowableError(code: 0): Call to a member function resolveAssociationEntries() on boolean at /www/vendor/doctrine/orm/lib/Doctrine/ORM/Cache/DefaultQueryCache.php:140)"} thanks to @mingmingxianseng
    4632: DDC-3789: Paginator does not convert entity ids if they are value objects thanks to @doctrinebot

Documentation

    7818: Add note into docs about not using SimpleAnnotationReader thanks to @SenseException
    7791: Fix preFlush event documentation stating incorrectly that flush can be called safely thanks to @Steveb-p
    7753: Add ORM annotations in getting-started docs thanks to @SenseException and @wajdijurry
    7744: Fixed a typo-error thanks to @noobshow
    7732: [Documentation] Missing comma fix thanks to @lchrusciel
    7729: Update DATE_ADD and DATE_SUB docs thanks to @JoppeDC
    7672: Added cross-links to relevant documentation thanks to @jschaedl
    7612: Update ordered-associations.rst thanks to @spirlici
    7610: Change APC to OPcache in improving-performance.rst thanks to @smtchahal
    7596: Correct method names and broken link in docs thanks to @mbessolov
    7577: Fix of single link to dbal docs in advanced-configuration.rst thanks to @SenseException
    7572: Remove codeigniter Framework example thanks to @SenseException
    7571: Fix typo in inheritance mappings docs thanks to @batwolf
    7557: Change Stackoverflow tag to doctrine-orm thanks to @malarzm
    7551: [2.6] Migrate repository name doctrine/doctrine2 -> doctrine/orm thanks to @Majkl578
    7530: Documentation error typo fix: s/Used-defined/User-Defined thanks to @vladyslavstartsev
    7519: #7518 Fixed type mismatch between EntityRepository#&#95;&#95;construct() and its documented constructor arguments thanks to @koftikes
    7518: EntityRepository::&#95;&#95;construct() expects Doctrine\ORM\EntityManager instead of actual required EntityManagerInterface thanks to @koftikes
    7490: Fix broken link thanks to @vladyslavstartsev
    7483: Fixed a minor syntax issue thanks to @javiereguiluz

CI

    7794: Fix test compatibility with DBAL 2.10.x-dev thanks to @lcobucci
    7731: Replace custom install script with add-on thanks to @greg0ire
    7473: Incremental CS checks in 2.x branches thanks to @Majkl578


v2.6.3 - Nov 21, 2018

This release provides fixes for many things, specially:

    Regression in commit order calculation
    BC-break in EntityManager#find() using optimistic lock outside of
    transaction
    PHP 7.3 compatibility issues

    Total issues resolved: 8
    Total pull requests resolved: 26
    Total contributors: 26

Documentation

    7472: fix incorrect phpdoc typehint thanks to @seferov
    7465: Fixes tiny typo in the 'Working with DateTime instances' documentation thanks to @unguul
    7444: Fixed URLs of doctrine-mapping.xsd in docs thanks to @naitsirch
    7441: $hydrationMode throughout can be a string as well as int (for custom modes) thanks to @asgrim
    7435: Fix a typo on Documentation thanks to @oguzdumanoglu
    7434: Removed FAQ paragraph stating public variables are disallowed thanks to @naitsirch and @flaushi
    7423: Update association-mapping.rst thanks to @ThomasLandauer
    7421: JIRA to Github issues on Limitations and Known Issues thanks to @seferov
    7412: Some formatting improvements thanks to @ThomasLandauer
    7411: Autoload error when following the Getting Started Guide thanks to @ThomasLandauer
    7401: [docs] Fix docblock in inheritance-mapping.rst thanks to @bobdenotter
    7397: Update getting-started.rst thanks to @eibt
    7394: Class 'Doctrine\Common\Persistence\Mapping\Driver\AnnotationDriver' not found thanks to @ekosynth
    7378: Typo fix thanks to @BenMorel
    7377: Fix query andX doctype thanks to @sserbin
    7374: Deprecation message in documentation for YAML thanks to @SenseException and @iltar
    7360: Document getPartialReference() properly thanks to @lcobucci

Bug

    7471: Fix parameter value processing for objects with unloaded metadata thanks to @alcaeus
    7367: Fix for BC break in 2.6.2 when calling EM::find() with LockMode::OPTIMISTIC outside of a TX thanks to @timdev
    7328: Handle removed parameters by tree walker in Paginator thanks to @plfort
    7325: Make code php 7.3 lint-compatible thanks to @paxal
    7317: [XML] Fix default value of many-to-many order-by to ASC thanks to @alexdenvir
    7260: Fix the handling of circular references in the commit order calculator thanks to @stof
    6830: fix applying column options on foreign key columns thanks to @Tobion

Improvement

    7428: CI: Test against PHP 7.3 thanks to @Majkl578
    7363: Fix compatibility with phan thanks to @philippe-unitiz
    7345: Correct DOMDocument constructor in test thanks to @guilliamxavier
    7307: Fix remaining usages of deprecated ClassLoader and Inflector from doctrine/common thanks to @Majkl578 and @simonwelsh


v2.6.2 - Jul 12, 2018

This release provides fixes for:

    a regression in parsing of DQL with aggregate functions as arguments in other functions,
    pessimistic locking without running transaction,
    using non-deprecated Lexer and Inflector.

    Total issues resolved: 3
    Total pull requests resolved: 7
    Total contributors: 5

Bug

    7296: Fix #7286: StringPrimary no longer accepts aggregate functions as argument thanks to @Majkl578 and @NothingWeAre
    7291: [2.6] Fix for #7068: EntityManager::find() with pessimistic lock should check for transaction thanks to @Majkl578 and @madwizard-thomas
    7274: Use non-deprecated version of Lexer and Inflector thanks to @Majkl578
    7190: Fix wrong type in phpdoc of Doctrine\ORM\Id\AbstractIdGenerator#generate() thanks to @Tobion
    7146: [XML] Fix default value of one-to-many order-by to ASC thanks to @Awkan

Improvement

    7290: Fix compatibility with DBAL 2.8 (doctrine/dbal#3157) thanks to @Majkl578

Documentation

    7276: Add UPGRADE note for EntityRepository::count() thanks to @Majkl578


v2.6.1 - Feb 27, 2018

This release provides fixes for:

    a regression in parsing of DELETE DQL queries without a DQL alias
    a regression in hydration of fields of intermediate classes multi-level single-/multi-table-inheritance
    a call to an undefined Doctrine\Common\Cache\MemcachedCache::setMemcache() method in the setup tooling
    persistence order for entities with identity through associated entity
    some persistence issues with join columns with special characters in them, which need to be quoted
    incorrect SQL parameter type binding in the basic entity persister
    versioned entity version fields caching within the second level cache

Total issues resolved: 23

    6043: Identity through foreign Entities - persist thanks to @Gorjunov
    6531: Cannot persist parent entity if OneToOne shares the same id thanks to @davidbarratt
    6701: Fix identity through foreign entities thanks to @vhenzl
    6939: Error for delete query without alias since 2.6.0 thanks to @dmaicher
    6971: Exception Call to undefined method Doctrine\Common\Cache\MemcachedCache::setMemcache() thanks to @rolando-caldas
    6988: Inheritance middle-layer doesn't get hydrated thanks to @kbond
    6997: ManyToManyPersister fails to remove join table entry if there is multiple join columns thanks to @NicolaF
    7002: Flush new entity with relation when use relation in composite key throws ORMInvalidArgumentException thanks to @samplestudio
    7003: Cannot persist new entity if primary key contains a foreign key and the referenced object is in state new and its id is not assigned thanks to @NicolaF
    7012: Fixed updating of entity with quoted identifier join column thanks to @janlanger
    7021: Fix incorrect variable reference thanks to @lcobucci
    7031: Tests failing in February (QueryDqlFunctionTest::testDateAdd with "month" dataset) thanks to @Majkl578
    7032: QueryDqlFunctionTest: Increase delta for testDateAdd() to work in February thanks to @Majkl578
    7051: Bugfix: Hydrate subclasses of subclasses thanks to @technetium
    7053: Fixed parser rejecting valid DQL thanks to @carnage
    7055: Fix date issues once and for all thanks to @lcobucci
    7059: Querying abstract class in the middle of a hierarchy returns NULL instead of objects thanks to @BenMorel
    7062: BasicEntityPersister confuses association types with PDO datatypes thanks to @mariusklocke
    7067: ORM second level cache and version (locking) thanks to @wtorsi
    7069: Test for Second level cache with Version, DDC #7067 thanks to @wtorsi
    7077: Fix BC-break on delete without alias DQL thanks to @lcobucci
    7082: Add failing test for issue #7062 - BasicEntityPersister confuses association types with PDO datatypes thanks to @mariusklocke
    7093: Fix updating entities with quoted identifier association thanks to @lcobucci


v2.6.0 - Dec 20, 2017

This release contains almost 3 years of active development and it provides several improvements and fixes, including:

    Better commit order calculation
    More stable second level cache
    Strict testing and quality control
    PHP 7.1+ requirement

Changes since 2.5.0

Total issues resolved: 444
Minor BC-Break

    6216: Remove unused "$className" argument thanks to @malukenho
    6325: Improve exception message for DQL single-valued association path expression to an inverse side (unsupported) thanks to @Isinlor
    6500: Allow internal functions to be overridden. thanks to @ThePixelDeveloper
    6556: Update ConsoleRunner's command list to include L2 cache and DBAL reserved keywords commands thanks to @lcobucci
    6905: Setup: Switch Apc -> Apcu and Memcache -> Memcached thanks to @Majkl578

New Feature

    1308: [DDC-3579] Allow override of inversedBy thanks to @z38
    1343: Support embeddables in partial object query expression [DDC-3621] thanks to @krixon
    1514: check if collection is empty without loading it thanks to @Metabor
    4401: DDC-3580: [GH-1308] [DDC-3579] Allow override of inversedBy thanks to @doctrinebot
    4475: DDC-3647: [GH-1354] [RFC] Added support for OneToMany with orphanRemoval. thanks to @doctrinebot
    5934: Allow override of fetch for associations thanks to @patrick-mcdougle
    5938: #5934 - add fetch option to AssociationOverride in order to override fetch strategy for subclasses of entities thanks to @Ma27
    6003: Expose EntityPersister::count() through EntityRepository::count() thanks to @phansys
    6397: This should fix Criteria startsWith and endsWith thanks to @svycka

Improvement

    1228: Fixed many small phpcs issues thanks to @acrobat
    1303: make QueryBuilder::getAllAliases public thanks to @mrkrstphr
    1310: Allow symfony 3.0 components thanks to @nicolas-grekas
    1344: Fix tests for SLC console commands failing due to console output decoration thanks to @billschaller
    1357: Drop useless execution bit thanks to @DavidPrevot
    1370: drop doctrine/common git submodule thanks to @TomasVotruba
    1382: Patch second level cache association hydration thanks to @holtkamp
    1384: Fix coding standard of IdentityGenerator#generate() thanks to @TomasVotruba
    1397: Add Expr::concat support for multiple arguments thanks to @giosh94mhz
    1400: mysqli is supported by HHVM thanks to @photodude
    1401: Remove HHVM-nightly builds thanks to @stof
    1405: EntityManager#getReference throw ORMException for unrecognized id thanks to @taueres
    1407: Add return to removeMethodTemplate thanks to @aivus
    1433: Check for non-cacheable entities on metadata level, not at runtime thanks to @goetas
    1451: composer: autoload via PSR-4 thanks to @TomasVotruba
    1452: composer: dev is now by default thanks to @TomasVotruba
    1457: Updated syntax for "integer" and "boolean" types thanks to @phansys
    1466: Travis: Switch to container-based infrastructure thanks to @Majkl578
    1470: [CI] Added dev requirement for "doctrine/coding-standard" thanks to @phansys
    1472: Add test for MariaDB 5.5 and 10.1 on Travis thanks to @PowerKiKi
    1474: Fix: Remove unused imports thanks to @localheinz
    1482: Add type hint for entity manager thanks to @bocharsky-bw
    1518: Added custom ID generator definition to the FieldBuilder thanks to @guiwoda
    1545: Generic overall fixes thanks to @guilhermeblanco
    1561: [DDC-4006] Inherit ID generator strategy mapping from embeddables thanks to @deeky666
    1563: Fixing method name 'rollBack', which was documented as 'rollback' thanks to @rawkode
    1570: [RFC] Tests around reported cases over DDC-2524 thanks to @guilhermeblanco
    1574: deduplication of internal UnitOfWork methods thanks to @Ma27
    1575: Add message to NonUniqueResultException thanks to @Alfredao
    1579: Reduce code duplication in ProxyFactory::createInitializer thanks to @aschempp
    4267: DDC-3458: [GH-1228] Fixed many small phpcs issues thanks to @doctrinebot
    4405: DDC-3584: [GH-1310] Allow symfony 3.0 components thanks to @doctrinebot
    4484: DDC-3655: [GH-1362] Readme: badges for 2.5 added; 2.3- dropped thanks to @doctrinebot
    4494: DDC-3664: [GH-1369] Drop empty file thanks to @doctrinebot
    4495: DDC-3665: [GH-1370] drop doctrine/common git submodule thanks to @doctrinebot
    4499: DDC-3669: [GH-1373] Add note about "symfony/yaml" dependency for yml mappings thanks to @doctrinebot
    4527: DDC-3694: [GH-1384] Fix coding standard of IdentityGenerator#generate() thanks to @doctrinebot
    4553: DDC-3717: [GH-1397] Add Expr::concat support for multiple arguments thanks to @doctrinebot
    4562: DDC-3725: [GH-1400] pgsql and mysqli are supported by HHVM thanks to @doctrinebot
    4563: DDC-3726: [GH-1401] Remove HHVM-nightly builds thanks to @doctrinebot
    4569: DDC-3731: [GH-1405] EntityManager#getReference throw ORMException for unrecognized id thanks to @doctrinebot
    4572: DDC-3734: [GH-1407] Add return to removeMethodTemplate thanks to @doctrinebot
    4626: DDC-3783: [GH-1433] Check for non-cacheable entities on metadata level, not at runtime thanks to @doctrinebot
    4658: DDC-3811: [GH-1451] composer: autoload via PSR-4 thanks to @doctrinebot
    4659: DDC-3812: [GH-1452] composer: dev is now by default thanks to @doctrinebot
    4672: DDC-3824: [GH-1457] Updated syntax for "integer" and "boolean" types thanks to @doctrinebot
    4684: DDC-3835: [GH-1466] Travis: Switch to container-based infrastructure thanks to @doctrinebot
    4691: DDC-3841: [GH-1470] [CI] Added dev requirement for "doctrine/coding-standard" thanks to @doctrinebot
    4697: DDC-3847: [GH-1474] Fix: Remove unused imports thanks to @doctrinebot
    4741: DDC-3887: [GH-1499] minor: removed useless line breaks thanks to @doctrinebot
    4743: DDC-3889: GH-1482 - add EntityManagerInterface type-hint to repository constructor thanks to @doctrinebot
    4771: DDC-3913: [GH-1514] check if collection is empty without loading it thanks to @doctrinebot
    4775: DDC-3917: [GH-1518] Added custom ID generator definition to the FieldBuilder thanks to @doctrinebot
    4792: DDC-3932: [GH-1526] Break on autoloader selected thanks to @doctrinebot
    4840: DDC-3980: [GH-1545] [WIP] General fixes thanks to @doctrinebot
    4849: DDC-3989: [GH-1550] [RFC] Added composer cache on travis thanks to @doctrinebot
    4855: DDC-3994: [GH-1553] doc fix thanks to @doctrinebot
    4873: DDC-4009: [GH-1563] Fixing method name 'rollBack', which was documented as 'rollback' thanks to @doctrinebot
    4912: DDC-4159: [GH-1579] Reduce code duplication in ProxyFactory::createInitializer thanks to @doctrinebot
    5548: Cleanup - ClassMetadataInfo#getColumnNames() simplification thanks to @Ocramius
    5557: Remove unnecessary namespaces imports and usage thanks to @malukenho
    5579: Fix performance issue when using notify tracking policy and calling flush($entity) multiple times thanks to @xhuberty
    5580: Move from coveralls to scrutinizer coverage thanks to @Ocramius
    5600: Remove dead code SQLWalker::walkCaseExpression thanks to @billschaller
    5634: Remove duplicate code in .travis.yml thanks to @alexislefebvre
    5651: Updated all commands to use the SymfonyStyle thanks to @hiddewie
    5673: removed unused use statement thanks to @svycka
    5713: Cleanup no longer used coveralls settings; use scrutinizer badges thanks to @OndraM
    5740: Fix onNotSuccessfulTest skipping the latest query thanks to @guilliamxavier
    5756: s/__tostring()/__toString() in Expr\OrderBy thanks to @whyte624
    5796: Catch Throwable instead of just catching Exception thanks to @BenMorel
    5823: Optimize imports. Remove full qualified class names. Remove dead code. thanks to @munkie
    5831: Multi get implementation in QueryCache thanks to @polyanin
    5860: Removed hacky switch/case, migrated to if/else and early return statements thanks to @peter-gribanov
    5862: Remove PHP 5.4 from travis builds thanks to @tPl0ch
    5863: Remove EOL PHP 5.4 from .travis.yml and composer.json - Fixes #5862 thanks to @tPl0ch
    5883: Make test suite compatible with PHPUnit 5.4. thanks to @sebastianbergmann
    5884: Drop PHP 5.5 support thanks to @Ocramius
    5886: removed some unused variables thanks to @ostrolucky
    5910: Code cleanups: early return/internal function usage thanks to @ReenExe
    5911: Scrutinizer clear code thanks to @ReenExe
    5913: Clear code metadata info thanks to @ReenExe
    5914: Cleanup SqlWalker code thanks to @ReenExe
    5977: Remove unneeded ternary operator from Query::contains thanks to @ostrolucky
    5987: Add missing type hints, add strictness for some checks, remove some useless calls thanks to @phansys
    6005: Improve functional test query logger thanks to @cvuorinen
    6010: Update exception message at EntityRepository::&#95;&#95;call() thanks to @phansys
    6014: As of HHVM 3.15 pgsql is supported, add php 7.1 to tests thanks to @photodude
    6017: Avoid error when entityName isn't a string thanks to @j0k3r
    6029: Misleading ORMInvalidArgumentException message thanks to @foaly-nr1
    6038: Remove excessive identifier hashing generated string length checks thanks to @ReenExe
    6068: Update docblock generation for nullable fields thanks to @phansys
    6085: More specific named native query throw exceptions test thanks to @arjank
    6121: Static Code Analysis with Php Inspections (EA Extended) thanks to @kalessil
    6136: [DX] Add details about invalid Connection passed at creation of EntityManager. thanks to @spacepossum
    6141: Allow using objects as discriminators thanks to @lcobucci
    6143: fixed #5622 - mysql 5.7 ONLY_FULL_GROUP_BY thanks to @chihiro-adachi
    6162: Report that FROM and JOIN do not support Subqueries thanks to @simonheimberg
    6164: EntityGenerator produces class with 2 empty lines at the end of the file thanks to @eyepin
    6166: Normalise codebase with PHP 5.6 features thanks to @lcobucci
    6204: Remove PHP 5 support thanks to @alcohol
    6205: Remove support for PHP 5.x thanks to @railto
    6231: Allow gearman environment vars in the concurrency test setup thanks to @gadelkareem
    6232: Allow gearman environment vars in the concurrency test setup thanks to @gadelkareem
    6245: Use getMultiple() to fetch associations as well in L2 cache fetch operations thanks to @lcobucci
    6286: Fix HHVM build according to Travis documentation thanks to @lcobucci
    6377: Minimum dependencies thanks to @sam-burns
    6378: PHPUnit 6 thanks to @sam-burns
    6389: XSD definition improvements thanks to @mikesimonson
    6412: "Notice: Undefined offset: 0" when there is no ID Column defined thanks to @jarjak
    6424: HHVM support thanks to @lcobucci
    6433: Remove dead code in the schema tool thanks to @mpdude
    6439: align equals signs thanks to @sensorario
    6440: Initial PHPStan integration thanks to @ondrejmirtes
    6442: Compute size of loaders in the test suite beforehand, and not on each iteration thanks to @sensorario
    6451: Allow Symfony 4.0 thanks to @nicolas-grekas
    6478: Fix YAML related tests thanks to @lcobucci
    6479: Fix all risky tests thanks to @lcobucci
    6481: Improve build extensions thanks to @lcobucci
    6493: Minor fixes: typos, documentation, etc. thanks to @astepin
    6507: Upgrade dependencies thanks to @lcobucci
    6511: Define build failure conditions on scrutinizer thanks to @lcobucci
    6515: Use the Travis' Trusty build environment thanks to @lcobucci
    6535: [master] PHPStan integration - levels 0 + 1 thanks to @Majkl578
    6569: Added a test case for postLoad on fetch-joined entities - fetch joined entities should have lifecycle events fired as well thanks to @stoccc
    6570: Prevent Travis-CI failure if xdebug is not available thanks to @stloyd
    6575: Move performance tests to phpbench thanks to @lcobucci
    6581: Travis enhancements: Use Build Stages, added PHP 7.2 thanks to @Majkl578
    6593: Mapped entity listeners are now processed by metadata exporters thanks to @tPl0ch
    6598: Refinement of the XML DTD - using orm:fqcn for class names thanks to @mikesimonson
    6601: Fix double spacing in "cascade persist missing" exception message thanks to @martin-georgiev
    6606: Add message to NonUniqueResultException thanks to @lcobucci
    6607: Be strict with risky tests thanks to @lcobucci
    6630: Remove reliance on Symfony\Component\Yaml deprecated constants thanks to @Ocramius
    6655: Use SymfonyStyle for command output thanks to @oskarstark
    6691: Use newer PHP syntax thanks to @keradus
    6703: Entity generator doesn't generate values for all supported options thanks to @lcp0578
    6714: Remove unnecessary else thanks to @guiajlopes
    6723: Remove $overrideLocalValues variable from UnitOfWork#createEntity() thanks to @Ocramius
    6731: #6723 Remove variable from UnitOfWork#createEntity() thanks to @guiajlopes
    6734: Add DateInterval type parameter thanks to @ossinkine
    6742: Add support second, minute, week, year on DATE_ADD and DATE_SUB thanks to @legenyes
    6772: Disallow orphan removal attribute on many-to-one thanks to @greg0ire
    6780: getRepository actually returns ObjectRepository thanks to @aequasi
    6801: Improve misleading ORMInvalidArgumentException message thanks to @foaly-nr1
    6819: Pagination LimitSubqueryWalker optimization thanks to @plfort
    6820: #6819 Optimize LimitSubqueryWalker thanks to @plfort
    6826: Add Type::GUID to $typeAlias list in EntityGenerator thanks to @jkapitein
    6843: Use new analyser on scrutinizer-ci thanks to @lcobucci
    6844: Configure PHPCS thanks to @lcobucci
    6849: Make entity generator generate values for all supported options thanks to @lcobucci
    6862: Fix closing tag in Symfony UI messages thanks to @oskarstark
    6887: Use stable packages thanks to @greg0ire
    6889: Clean elses thanks to @carusogabriel
    6892: Re-order attributes of relation complex types thanks to @thexpand
    6895: Reduce complexity of LimitSubqueryWalker#walkSelectStatement() thanks to @lcobucci
    6896: Run all code quality tools in the same stage thanks to @lcobucci
    6897: Upgrade PHPStan to 0.9.x thanks to @lcobucci
    6911: Require more up-to-date dependencies thanks to @lcobucci

Fixes

    1337: Paginator OrderBy fix take 2 thanks to @billschaller
    1345: Fix crashes in ConvertMappingCommand and GenerateEntitiesCommand... thanks to @billschaller
    1346: Fix: generated IDs are converted to integer thanks to @pepakriz
    1377: LimitSubqueryOutputWalker: fix aliasing of property in OrderBy from MappedSuperclass thanks to @fprochazka
    1395: Fix for DDC-3697 and DDC-3701 thanks to @mpdude
    1399: Fix for DDC-3719. thanks to @boskee
    1441: INSTANCE OF now behaves correctly by including all possible child classes in IN() filtering conditions thanks to @taueres
    1458: [Paginator] Fixed boolean casting thanks to @phansys
    1463: Fixed issue when paginator orders by a subselect expression thanks to @ehimen
    1521: [DDC-2922] Error when new entities are reachable through multiple paths but not all of them are marked cascade-persist thanks to @dhager
    1526: Break on autoloader selected thanks to @zinovyev
    1547: [RFC] fixes result cache setting query caching thanks to @guilhermeblanco
    1549: [RFC] DDC-3697 thanks to @guilhermeblanco
    1555: [RFC] DDC-3979 thanks to @guilhermeblanco
    1559: Entity cache key is built differently on read than on write thanks to @guiwoda
    2947: DDC-2248: Expire result cache functionality not implemented thanks to @doctrinebot
    3247: DDC-2524: Wrong commit order with cascade remove and double association thanks to @doctrinebot
    3468: DDC-2726: EventSubscriber PreUpdate Error Bug? thanks to @doctrinebot
    3528: DDC-2780: IS [NOT] NULL conditions with JOINs thanks to @doctrinebot
    4551: DDC-3715: [GH-1395] Fix for DDC-3697 thanks to @doctrinebot
    4555: DDC-3719: Criteria won't work on non-owning side of many to many collection thanks to @doctrinebot
    4576: DDC-3738: [GH-1409] Added PHPDoc return type false of next method in Hydration/IterableResult thanks to @doctrinebot
    4580: DDC-3741: [GH-1411] Allow null to be passed to setHydrationCacheProfile thanks to @doctrinebot
    4584: DDC-3745: OneToOne identity through foreign entity exception on flush thanks to @doctrinebot
    4630: DDC-3787: [GH-1436] allow ManyToManyPersister to handle identification types thanks to @doctrinebot
    4646: DDC-3800 #1441 INSTANCE OF now behaves correctly by including all possible child classes in IN() filtering conditions thanks to @doctrinebot
    4648: DDC-3802: [GH-1443] Unsigned thanks to @doctrinebot
    4657: DDC-3810: [GH-1450] [DX] Link annotation ref to locking explanation thanks to @doctrinebot
    4668: DDC-3820: [GH-1455] Update ExprTest.php thanks to @doctrinebot
    4717: DDC-3865: [GH-1487] [DDC-3864] Support any ordering of fields in partial object query with embeddable thanks to @doctrinebot
    4752: DDC-3897: [GH-1505] Fixed issue with entity manager when using LockMode::NONE thanks to @doctrinebot
    4781: DDC-3922: [GH-1522] remove indexes overruled by primary key thanks to @doctrinebot
    4802: DDC-3941: Compatibility issue with PHP 7.0 on proxy generation. thanks to @doctrinebot
    4807: DDC-3946: [GH-1533] Fix argument type thanks to @doctrinebot
    4827: DDC-3967: Identifier is cached with wrong type thanks to @doctrinebot
    4835: DDC-3976: [GH-1542] Failing test: Owned side of a oneToMany relation doesn't evict its collection cache thanks to @doctrinebot
    4838: DDC-3979: [GH-1544] DefaultEntityHydrator: Undefined index: targetToSourceKeyColumns thanks to @doctrinebot
    4841: DDC-3982: [GH-1547] [RFC] fixes result cache setting query caching thanks to @doctrinebot
    4846: DDC-3986: [Paginator] Invalid generated query with usage of output walkers thanks to @doctrinebot
    4854: DDC-3993: [GH-1552] Collection cache key is built differently on read than on write thanks to @doctrinebot
    4864: DDC-4000: [GH-1557] Reduce ambiguity in Entities description thanks to @doctrinebot
    4865: DDC-4001: [GH-1558] [RFC] remove indexes overruled by primary key thanks to @doctrinebot
    4867: DDC-4003: [GH-1559] Entity cache key is built differently on read than on write thanks to @doctrinebot
    4868: DDC-4004: [GH-1560] Fix broken links thanks to @doctrinebot
    4870: DDC-4006: ID generator strategy not inherited from embeddable thanks to @doctrinebot
    4871: DDC-4007: [GH-1561] [DDC-4006] Inherit ID generator strategy mapping from embeddables thanks to @doctrinebot
    4872: DDC-4008: [GH-1562] Fix empty expression on PHP 5.4 thanks to @doctrinebot
    4888: DDC-4022: [GH-1574] deduplication of internal UnitOfWork methods thanks to @doctrinebot
    5562: Second Level cache doesn't work properly with OneToOne association and inheritance thanks to @rafrsr
    5590: Fix discriminator column defaults thanks to @billschaller
    5605: UnitOfWork pre update invoke causes some times fatal errors thanks to @sr-amueller
    5622: Mysql 5.7 requires order by clause in select DISTINCT statement (Paginator) thanks to @devolicious
    5638: Ddc 3719 fix and test thanks to @jeancarlomachado
    5668: Many to many criteria fixes thanks to @petitchevalroux
    5680: DDC-2780 - Fixed issue with IS NULL on join aliases thanks to @byonchev
    5684: Custom type ignored by identity generator thanks to @bharley
    5686: Fixed test failing due to changes in AnnotationReader thanks to @mbeccati
    5729: Fix typo thanks to @funivan
    5793: SecondCacheLevel association and inheritance update problem thanks to @mpoiriert
    5808: second-level-cache, entity-hydrator throws exception thanks to @floriansemm
    5834: Fix custom-id-generator XSD class attribute type: s/NMTOKEN/string thanks to @ismailbaskin
    5853: Fix typo thanks to @lcobucci
    5854: Default query cache using wrong object thanks to @lcobucci
    5856: #5854 workaround to avoid populating Second Level Cache from DQL queries with multiple nested DQL aliases thanks to @Ocramius
    5885: Partially reverting #5860 due to type juggling horrors thanks to @Ocramius
    5887: Failing inverse One-to-One relationship using a custom data type thanks to @alexb-uk
    5897: Check for Xcache availability from INI setting thanks to @mikaelz
    5924: Allow empty string identifiers thanks to @Ocramius
    5935: Fix #5684 - Fix mapping on insertion for autoincrement columns with custom types thanks to @mantiz
    5973: This should fix MySQL 5.7 issues caused by ONLY_FULL_GROUP_BY thanks to @wucdbm
    6020: Convert generated id value to its PHP representation. thanks to @renan
    6129: XmlDriver incorrectly parses boolean option values thanks to @kalimatas
    6130: #6129 Added unit test for boolean option values. thanks to @kalimatas
    6142: Fix incompatibility w/ PHP7.2+ thanks to @mbeccati
    6152: Use the correct types for generated ids thanks to @lcobucci
    6217: Handle AssociationCacheEntry identifier thanks to @gadelkareem
    6223: Appends cache namespace when it exists (for L2C regions) thanks to @lcobucci
    6244: Make sure we're using the rootEntityName on all places thanks to @lcobucci
    6251: Add missing group to DDC2660Test.php thanks to @mbeccati
    6274: Fixing #5887 - lazy loading of one-to-one relationship with custom id object thanks to @necsord
    6284: #6217 when hydrating an entity with a composite primary key that is both an EAGER and a LAZY association and also cached, the DefaultQueryCache tries to pass L2 cache implementation detail objects to the UnitOfWork thanks to @gadelkareem
    6287: Fix EntityManagerDecorator tests thanks to @lcobucci
    6303: ObjectHydrator and ArrayHydrator incorrectly hydrate fields of child classes in a JTI when a field name collides thanks to @fullbl
    6304: Check if the discriminator value is null before converting it and setting into rowData during hydration thanks to @fullbl
    6328: DDC-2780 - Fixed issue with IS NULL on join aliases thanks to @lcobucci
    6356: Fix wrong variable name thanks to @gander
    6392: Correct DQL INSTANCE OF to filter all possible child classes thanks to @jean85
    6402: Quote strategy not applied to foreign key columns thanks to @lemartin
    6404: Fix quoting issues related to ticket #6402 thanks to @lemartin
    6416: Fix quoting when using inheritance as well thanks to @lcobucci
    6417: Fix expire result cache thanks to @lcobucci
    6436: Pass the connections parameters for cache key generation thanks to @lcobucci
    6441: Verify that the fileLockRegionDirectory passed to the DefaultCacheFactory cannot be empty thanks to @sensorario
    6460: Getting embeddable should trigger entity initalization thanks to @mkosiedowski
    6462: Fix #6460 - \Doctrine\ORM\Mapping\ClassMetadataInfo::hasField should return true for embedded fields thanks to @mkosiedowski
    6468: Cascade persist order thanks to @1ed
    6485: #5804 Versioning doesn't work with a custom type primary key thanks to @alle
    6491: Fix Mock Implementations. thanks to @ThePixelDeveloper
    6494: Add failing test for #6314 and PR #6356 thanks to @astepin
    6496: #5804 #6485 Versioning doesn't work with a custom type primary key thanks to @astepin
    6639: 2.6 (dev-master at present) excludes all stable versions of symfony/yaml thanks to @asgrim
    6640: #6217 #6284 when hydrating an entity with a composite primary key that is both an EAGER and a LAZY association and also cached, the DefaultQueryCache tries to pass L2 cache implementation detail objects to the UnitOfWork thanks to @Ocramius
    6651: Replacing direct quote model-set schema creation with actually existing model-set setup thanks to @Ocramius
    6652: Correcting the SimpleInsertPerformanceBench duplicate record issues when run with multiple revolutions/iterations thanks to @Ocramius
    6658: Drop explicit conflict with stable symfony/yaml thanks to @Majkl578
    6759: Inverse side of OneToOne is loaded without identifier condition thanks to @janlanger
    6760: #6759 showstopper one-to-one inverse not being loaded with correct identifier restrictions when defining joinColumn thanks to @Ocramius
    6767: Allow association mappings as IDs for joined-table inherited entity thanks to @parent5446

Documentation

    1305: Documentation : fix table prefix with STI thanks to @guillaumerobin
    1341: [doc] Minor fixes and typos thanks to @javiereguiluz
    1355: [Docs] TablePrefix example - Check for being the owning side thanks to @scaytrase
    1358: Update docs for clear-cache commands thanks to @zerocrates
    1360: Fixed misleading typo in Embeddables tutorial thanks to @stedekay
    1362: Readme: badges for 2.5 added; 2.3- dropped thanks to @TomasVotruba
    1366: [Documentation] typo fixes thanks to @shieldo
    1368: Readme: coverage badge for 2.4 added thanks to @TomasVotruba
    1379: Added missing 'new' keyword for logger instantiation thanks to @holtkamp
    1385: duplicated param in phpdoc thanks to @TomasVotruba
    1386: PersisterException: missing license added thanks to @TomasVotruba
    1390: Document the ChainCache class thanks to @deviantintegral
    1396: [Documentation] Initializing embeddables doc thanks to @padam87
    1404: Fix PHPDoc typo thanks to @stephan281094
    1408: [doc] Remove unused variable from sample code thanks to @baileylo
    1429: Update events.rst to reflect behaviour of preUpdate thanks to @hallabro
    1442: Corrected bad class reference in "Adding own commands" thanks to @elazar
    1444: Missing opening tags added in one of the tutorials thanks to @cezarykluczynski
    1462: Add a note to documentation for transactional()'s return values thanks to @dhager
    1473: Docs fix ref and title thanks to @ilyar
    1483: Fix typo thanks to @longkey1
    1485: Changed references from PHP6 to PHP7 thanks to @hasumedic
    1496: Fix invalid return type in docblock thanks to @dagio
    1497: Update DateTime cookbook code thanks to @PowerKiKi
    1500: Update docs dependency install script and readme to target Ubuntu 14.04 thanks to @billschaller
    1504: Updated docs for basic mapping thanks to @phansys
    1506: Fix variable reference in phpdoc of ClassMetadataInfo thanks to @tobion
    1511: Fix class name: AbstractCache -> CacheProvider thanks to @bluem
    1516: Clarify @DiscriminatorMap requirement thanks to @brabeji
    1520: Updated year range thanks to @aqnouch
    1523: Documentation and case fixes in QueryBuilder thanks to @BenMorel
    1528: Fixed typo in 9.6.7 of docs thanks to @sprain
    1534: Use capital letter at the beginning of a sentence thanks to @senkal
    1536: Minor - Fix PHP Doc - Update Expr.php thanks to @angelfqc
    1554: Fix a documentation error in the EntityManagerInterface#transactional() return value thanks to @tai2
    1566: Fix typos in DQL doc thanks to @BenMorel
    1808: DDC-1201: DQL Example about count(*) related entity is wrong thanks to @doctrinebot
    2190: DDC-1555: Reference. 8 Work. with obj. Making "see "Transitive Persistence"" as link thanks to @doctrinebot
    4488: DDC-3659: [GH-1366] [Documentation] typo fixes thanks to @doctrinebot
    4493: DDC-3663: [GH-1368] Readme: coverage badge for 2.4 added thanks to @doctrinebot
    4496: DDC-3666: [GH-1371] Readme: drop "Downloads" link thanks to @doctrinebot
    4514: DDC-3682: [GH-1379] Added missing 'new' keyword for logger instantiation thanks to @doctrinebot
    4528: DDC-3695: [GH-1385] duplicated param in phpdoc thanks to @doctrinebot
    4531: DDC-3698: [GH-1386] PersisterException: missing license added thanks to @doctrinebot
    4539: DDC-3704: [GH-1390] Document the ChainCache class thanks to @doctrinebot
    4566: DDC-3729: [GH-1404] Fix PHPDoc typo thanks to @doctrinebot
    4650: DDC-3804: [GH-1444] Missing opening tags added in one of the tutorials thanks to @doctrinebot
    4677: DDC-3829: [GH-1462] Add a note to documentation for transactional()'s return values thanks to @doctrinebot
    4696: DDC-3846: [GH-1473] Docs fix ref and title thanks to @doctrinebot
    4705: DDC-3854: [GH-1483] fix typo thanks to @doctrinebot
    4708: DDC-3857: [GH-1485] Changed references from PHP6 to PHP7 thanks to @doctrinebot
    4736: DDC-3882: [GH-1497] Update DateTime cookbook code thanks to @doctrinebot
    4742: DDC-3888: [GH-1500] Update docs dependency install script and readme to target Ubuntu 14.04 thanks to @doctrinebot
    4751: DDC-3896: [GH-1504] Updated docs for basic mapping thanks to @doctrinebot
    4753: DDC-3898: [GH-1506] Fix variable reference in phpdoc of ClassMetadataInfo thanks to @doctrinebot
    4768: DDC-3910: [GH-1511] Fix class name: AbstractCache -> CacheProvider thanks to @doctrinebot
    4773: DDC-3915: [GH-1516] Clarify @DiscriminatorMap reqirement thanks to @doctrinebot
    4779: DDC-3920: [GH-1520] Updated year range thanks to @doctrinebot
    4787: DDC-3928: [GH-1523] Documentation and case fixes in QueryBuilder thanks to @doctrinebot
    4796: DDC-3936: [GH-1528] Fixed typo in 9.6.7 of docs thanks to @doctrinebot
    4809: DDC-3948: [GH-1534] Use capital letter at the beginning of a sentence thanks to @doctrinebot
    4819: DDC-3957: [GH-1536] Minor - Fix PHP Doc - Update Expr.php thanks to @doctrinebot
    4856: DDC-3995: [GH-1554] Fix a documentation error in the EntityManagerInterface#transactional() return value thanks to @doctrinebot
    4878: DDC-4013: [GH-1566] Fix typos in DQL doc thanks to @doctrinebot
    5572: Guess missing words thanks to @greg0ire
    5584: Fix broken links to blog post. thanks to @harikt
    5585: Replacing the hardcoded year with a function call thanks to @mikesimonson
    5591: Removing 2.4 from README thanks to @Ocramius
    5596: Wrong $saveMode parameter documentation in SchemaTool::updateSchema thanks to @dcb
    5597: Fix documentation of schema tool's "save mode" thanks to @deeky666
    5612: [Doc] Is it a typo? thanks to @issei-m
    5620: "Class 'Doctrine\Tests\OrmFunctionalTestCase' not found" when trying to run PHPUnit thanks to @stanleysathler
    5623: Update tests README thanks to @jean85
    5667: Add missing @throws tags thanks to @jeroendedauw
    5670: Add precision on the time units thanks to @mikesimonson
    5675: Fixed broken links on getting-started tutorial thanks to @jeancarlomachado
    5677: Updating the Getting Started guide's documentation thanks to @natechicago
    5734: Update tools.rst thanks to @amerryma
    5736: Fix PHP syntax error in composite-primary-keys.rst thanks to @guilliamxavier
    5771: Remove note on findBy not supporting entity thanks to @teohhanhui
    5786: [documentation] Missing Embedded and Embeddable anotations in annotations reference index thanks to @maks3w
    5787: Fix bug: orderBy documentation thanks to @ibet7o
    5805: Fix typo in documentation thanks to @bornfreee
    5813: Add embedded and embeddable annotations in annotations reference index thanks to @jeancarlomachado
    5817: Added missing - in the in getting started docs. thanks to @primozcigler
    5837: Use constant consistently thanks to @foaly-nr1
    5873: Update query-builder.rst thanks to @vudaltsov
    5882: PHP 5.4 compatibility issues thanks to @ic1011
    5891: Fix typo in PHPDoc block of QueryBuilder.php thanks to @chrisp1tv
    5892: #5882 recommend using latest stable PHP version in the getting started guide thanks to @breiteseite
    5898: Typo thanks to @radmax
    5902: Fixed typo (serves => servers) thanks to @holtkamp
    5918: Make setSQL and setDQL function calls case-sensitive. thanks to @tonynelson19
    5931: Clarify language regarding ArrayCollections. thanks to @bitwombat
    5942: Add @CustomIdGenerator to documentation thanks to @erikvv
    5947: Missing ClassMetadataExporter instantiation in the reverse engineering code samples thanks to @alexryderwhytewaters
    5948: Update association-mapping.rst to ease understanding of what associations mean thanks to @michal-sk
    5971: Wrong return type of getResult() thanks to @giginos
    5972: Wrong return type of getResult() thanks to @giginos
    6013: Documentation - Fix typo thanks to @guhelski
    6025: Fix typo in batch-processing doc thanks to @ywarnier
    6063: Fix PHP version in readme. thanks to @kormik
    6065: Update Autoloader namespace [docs] thanks to @adiq
    6070: Update events.rst thanks to @alexndlm
    6080: Fixed typo + added link thanks to @thomaslandauer
    6087: Fix namespace thanks to @chihiro-adachi
    6089: Remove duplicated enum type comment from declaration. thanks to @damour
    6092: Updated a link (hopefully :-) thanks to @thomaslandauer
    6095: Fixed typo in annotations reference thanks to @mschroeder
    6101: Add license checker to the build thanks to @malukenho
    6120: Fixed typos regarding the strategy for composite keys (xml mapping) thanks to @mschroeder
    6138: Added examples for version column in the xml and yml formats thanks to @whiteeagle88
    6145: Improving the documentation of enums as discriminators test thanks to @lcobucci
    6171: Include example of a cascaded "persist" operation thanks to @thomaslandauer
    6179: Minor fixes to the 'getting started' page thanks to @biggianteye
    6197: getSingleScalarResult() returns NULL when the query yields no results thanks to @BenMorel
    6207: Documentation: Fixes missing namespaces on class call thanks to @gabidavila
    6212: Fix wrong DQL example thanks to @malukenho
    6215: Added link to Transitive Persistence thanks to @malukenho
    6219: Complete re-write of "Transitive persistence / Cascade Operations" thanks to @thomaslandauer
    6220: Fix annotations thanks to @enumag
    6227: Minor formatting improvements thanks to @thomaslandauer
    6250: Note on Entity listeners thanks to @johndodev
    6257: Adding a note about the Doctrine\ORM\QueryBuilder#addCriteria() method thanks to @weaverryan
    6260: Document the Custom option of the generated value annotation thanks to @mikesimonson
    6262: Fix a link to a ref in another page thanks to @mikesimonson
    6268: Fix annotation thanks to @enumag
    6285: Fix typos and wording in NamingStrategy documentation thanks to @svencan
    6326: [Documentation] Add column check-option to documentation thanks to @senseexception
    6386: doc: fixed class name thanks to @chihiro-adachi
    6395: Updated broken links thanks to @yannickl88
    6399: Fix incorrect YAML example for versioning a field. thanks to @neobyteuk
    6400: Fix incorrect YAML datetime version field. thanks to @neobyteuk
    6410: Minor typo naming strategy documentation thanks to @PowerKiKi
    6446: Update theme submodule thanks to @eibt
    6456: Fixes and clarifications to Association Mapping document thanks to @bitwombat
    6466: Update QueryBuilder docblock to reflect correct type of bound parameter type thanks to @fmagnan
    6501: Clarify the impact of changing the fetch mode thanks to @mpdude
    6508: [Doc] Fix links to api doc in the second level cache documentation page thanks to @magnetik
    6545: Fix newline in annotation example in documentation thanks to @landerstraeten
    6562: Make minor English fixes. thanks to @bitwombat
    6572: Add additional detail and clarifications on SELECT thanks to @bitwombat
    6579: Document string as possible parameter type for Expr#between() thanks to @nek-
    6588: Updating docs to support for APCu as a cache driver thanks to @reypm
    6632: The documentation does not mention the nullable default value for @column thanks to @kwadz
    6636: Mention the nullable default value for @column thanks to @kwadz
    6642: Fixed typo in DQL docs thanks to @radmax
    6644: fixed typo into native-sql documentation thanks to @alessandrominoccheri
    6685: Updating Query#$&#95;maxResults to allow for null (no limit) thanks to @votemike
    6690: Clarify association mapping language thanks to @bitwombat
    6695: Update table prefix docs thanks to @wshafer
    6715: Promote nullable types from PHP 7.1 thanks to @PowerKiKi
    6746: [DOCS] Emphasize that Embeddable can only contain simple fields thanks to @malarzm
    6749: Use EntityManagerInterface in attribute's docblock to match with constructor thanks to @konstantinkuklin
    6755: EntityManager::getReference() can return null thanks to @BenMorel
    6764: fixed little typo inside documentation thanks to @alessandrominoccheri
    6766: Moved explanation out of PHP-Codeblock... thanks to @thomaslandauer
    6778: Clarify docs for embedded and embeddable. thanks to @stevepetcu
    6788: [Docs] Type::convertToDatabaseValue is always called thanks to @kejwmen
    6800: Fix some grammar and outdated information in docs thanks to @erikjson
    6805: [Docs] Corrected NamingStrategy demo code to match example thanks to @yesdevnull
    6894: README: Fix PHP version thanks to @Majkl578
    6898: UPGRADE: Added method parenthesis, fixed method name thanks to @Majkl578


v2.5.14 - Dec 16, 2017

This version backports bugfixes related to the generation of queries with joins and configuration of the result set cache profile of a query.

Total issues resolved: 2

    6748: Fix missing null check on AbstractQuery#setResultCacheProfile() thanks to @KonstantinKuklin
    6812: Fix syntax error when join unrelated entity with discriminator entity thanks to @Deltachaos


v2.5.13 - Nov 27, 2017

This release fixes several small issues found on the next minor release of the ORM (v2.6.0) that we could easily backport to v2.5.x.

Total issues resolved: 13

    5904: Fixed overwriting explicit cache namespace thanks to @JanJakes
    6167: Fails to insert to a PostgreSQL master-slave config due to SequenceGenerator(NEXTVAL) issues thanks to @mkurzeja
    6168: Fixed #6167 - Forced SELECT NEXTVAL to be run on master thanks to @mkurzeja
    6682: SequenceGenerator crashes with non-numeric value encountered when using XML Driver thanks to @alextech
    6683: Supply default values for optional values in sequence mapping if omitted by driver. thanks to @alextech
    6699: setParameter issue when mixing :name and ?0 syntax thanks to @Seb33300
    6705: Fix parameter name comparison in AbstractQuery regarding different types (fixes #6699) thanks to @Majkl578
    6740: Fix operator when using criteria on ManyToMany thanks to @mduplouy
    6810: BasicEntityPersister::count() return type contract violation in 2.5.x branch thanks to @vkurdin
    6818: BasicEntityPersister::count() return type fix thanks to @vkurdin
    6821: Make test suite compatible with PHP 7.2 thanks to @remicollet
    6848: Fixed overwriting explicit cache namespace thanks to @lcobucci
    6852: Backport #6167 from 2.6 to 2.5.x branch thanks to @gigi


v2.5.12 - Oct 23, 2017

This release allows Doctrine to work with Symfony 4.

Total issues resolved: 1

    6733: Allow Symfony 4 thanks to @fabpot


v2.5.11 - Sep 18, 2017

This release reduces the version constraints on the doctrine/instantiator dependency,
effectively allowing any doctrine/instantiator version to be installed.

Total issues resolved: 1

    6635: Allow installation of doctrine/instantiator:^1.0.1 thanks to @davidbarratt


v2.5.10 - Aug 18, 2017

This release fixes an issue related to a long standing issue with how
PHP handles loading of external XML entities (https://bugs.php.net/bug.php?id=62577).

Total issues resolved: 2

    3788: DDC-3020: simplexml_load_file(): I/O warning: failed to load external in XmlDriver thanks to @doctrinebot
    6633: XmlDriver: Avoid PHP bug #62577 by avoiding simplexml_load_file() thanks to @apapsch


v2.5.9 - Aug 16, 2017

This release fixes a couple regression introduced by
v2.5.7 and v2.5.8.

Specifically, AbstractHydrator#hydrateAll() was raising
E_NOTICE errors due to it not being registered with the
EventManager, yet trying to remove itself from the
registered listeners. #6623

In addition to that, having embeddable final classes
would cause errors being raised while trying to generate
proxies. The ORM will no longer attempt to generate proxies
for embeddables. #6625

Total issues resolved: 3

    6623: Ensure that AbstractHydrator#hydrateAll() detaches the hydrator from the event manager thanks to @echo511
    6625: Proxy generation for embedded/transient classes thanks to @bendavies
    6626: #6625 Skip proxy generation for embeddable classes thanks to @issei-m


v2.5.8 - Aug 13, 2017

This release solves a bug introduced while backporting
#6464 and #6475.
Specifically, a dangling undefined variable remained in the
code, causing some SqlWalker functionality to misbehave.
The undefined variable wasn't noticed due to it being placed
in an empty() expression.

Total issues resolved: 1

    6621: Fixed usage of undefined variable in empty() expression in SqlWalker thanks to @Powerhamster


v2.5.7 - Aug 11, 2017

This release fixes a number of bugs detected in the current stable
release of the ORM.

This patch introduces compatibility with Doctrine DBAL 2.6.x. #6580

The most critical issue being fixed is a bug
in Doctrine\ORM\PersistentCollection, causing duplicate data
to be persisted when a collection is both marked as initialized
and dirty, and more entries are added to it via
the Doctrine\Common\Collections\Collection#add()
API. #6613 #6614
#6616

The return value of Doctrine\ORM\PersistentCollection#removeElement()
was sometimes an object or null, causing some applications to crash when PHP is run within the context ofdeclare(strict_types=1);` #6550

Memory leak issues with the hydrator process were fixed: the
hydrator object was never being garbage collected due to it
being registered with a Doctrine\Common\EventManager instance
to listen for the Doctrine\ORM\Events::onClear event. #1515

The Doctrine\ORM\Tools\Pagination\CountOutputWalker was producing
invalid SQL for queries containing a GROUP BY clause. #6243

The SQL generated for a DQL query containing a JTI (Joined Table
Inheritance) selection and a WITH clause applied to a JOIN
condition was invalid on PostgreSQL. #6475

The Doctrine\ORM\Tools\Console\MetadataFilter was not detecting
all metadata matching the filter regular expression. #5715

The Doctrine\ORM\Tools\SchemaTool was raising notices due to
invalid lookup for a discriminator column length, which may
not be defined in all mappings. #5798

Total issues resolved: 18

    1515: DDC-3146 Remove onClear event listener from abstract hydrator in cleanup function, otherwise causing hydrator GC to not kick in thanks to @emiel-silverstreet
    1541: Type annotation correction in ResultSetMappingBuilder#addJoinedEntityFromClassMetadata() $relation (should be string) thanks to @aleeeftw
    3925: DDC-3146: Hydrator memory leak when using iterator thanks to @doctrinebot
    4772: DDC-3914: #1515 DDC-3146 Remove event listener from abstract hydrator in cleanup function thanks to @doctrinebot
    5715: Fix MetadataFilter regression after #507 (#2815) not testing filters after first one thanks to @guilliamxavier
    5745: PersistentCollection#removeElement() returns object or null instead of boolean thanks to @holtkamp
    5798: Fix undefined index for discriminator column length attribute in SchemaTool thanks to @sergeyfedotov
    6243: Fix CountOutputWalker for queries containing a GROUP BY clause, which was producing invalid SQL thanks to @enumag
    6362: Undefined Property error in ObjectHydrator when using JOIN WITH thanks to @SirWaddles
    6367: Correct hydration of resultsets coming from DQL queries where the root of the selection is aliased and also the root of an inheritance thanks to @SirWaddles
    6381: Corrected LoadClassMetadataEventArgs @method annotations to reflect actual returned types thanks to @ElisDN
    6464: Query builder yields invalid SQL with JOINED inheritance type on PostgreSQL thanks to @stesie
    6475: Fix invalid sql generated for CTI JOINs when INNER JOIN'ing with a WITH clause thanks to @stesie
    6550: Fix return value of PersistentCollection#removeElement() for extra-lazy collections: should be bool thanks to @alcaeus
    6580: Allow DBAL 2.6 and common 2.8 to be installed thanks to @Tobion
    6613: There is the fail "UNIQUE constraint failed" with a LAZY collection thanks to @Sysaninster
    6614: UNIQUE constraint failed errors when manipulating a LAZY collection and calling toArray() on it thanks to @Sysaninster
    6616: #6613 #6614 correct handling of new elements added to an initialized (yet dirty) collection thanks to @Ocramius


v2.5.6 - Dec 19, 2016

This release relaxes doctrine/common requirements
in order to allow installation of versions that support PHP 7.1 features in proxy class
generation. Please note that a similar requirement relaxation still needs to be applied to
doctrine/dbal in order to allow installation of
the latest doctrine/common versions. #6156

This version also backports some fixes around the eviction of the second level cache entries
of inverse side associations in one-to-many - many-to-one mappings. #6159

Further fixes were applied in order to have child classes in inheritance mapping share the
same timestamp region when the second level cache is enabled. #6028

Also, Doctrine\ORM\EntityManager#merge() now triggers Doctrine\ORM\Events::prePersist
listeners with the merged entity state whenever an internal Doctrine\ORM\UnitOfWork#persist()
call is implied. #6177.

Total issues resolved: 8

    5570: Fix PrePersist EventListener when using merge instead of persist
    6028: Make child entity share the timestamp region with parent class
    6110: Clear $this->collection even when empty, to reset keys
    6156: Allow doctrine/common 2.7
    6159: #5821 Backport #1551 - Fixed support for inverse side second level cache
    6174: Merging a new entity with PrePersist event make changes in callback not be considered
    6177: Fix #6174 #5570: merging new entities should also trigger prepersist lifecycle callbacks with merged entity data
    6178: Backport #6177 - fix #6174 #5570: merging new entities should also trigger prepersist lifecycle callbacks with the merged data


v2.5.5 - Sep 10, 2016

This release includes a big amount of bugfixes.

Specifically, following issues were fixed:

    Embeddable classes are now allowed in inheritance trees 4097
    Removed some object hash collisions caused by entity merging 1465
    Allowed usage of mathematical operators in DQL HAVING clauses 5598
    Fixed cloning of proxies with private properties at multiple inheritance levels 5755
    Entity insertions are correctly cleared when a specific entity is to be cleared 5849
    Corrected hydration of fetch-joins that use composite keys 5762
    Metadata exporters now only export the owning side metadata in a one-to-one relation 5858
    Corrected hydration of JTI entities when NULL is retrieved for a simple_array or json_array field 5989
    Correctly expire L2 cache query caches, based on entity region cache timestamp 6001

Total issues resolved: 18

    1465: spl_object_hash conflict on Merge
    4097: DDC-3303: @ORM\Embedded does not work with extending classes
    4277: DDC-3467: Embeddable in inheritance must currently be protected
    5598: HAVING clause with variable and *, / math operators
    5599: Fix #5598 issue with /, * in DQL not translating query components properly
    5689: Avoid conflicts due to spl_object_hash
    5755: Error on entity clone for MappedSuperclass fields
    5762: fetch join using composite key on join entity fails to hydrate correctly
    5768: Fixes #5755 - Parent class fields are not cloned
    5776: add functional test and bug fix for issue #5762
    5849: UnitOfWork#clear() doesn't clear entityInsertions when entityName is passed
    5850: Clear UnitOfWork#$entityInsertions for specific entityName
    5858: Exporters should only inspect joinColumns for owning side in bi-directional OneToOne
    5867: Allow the usage of embedded objects on parent classes
    5975: Fix hydration after fetch join on entity with composite primary key
    5989: SimpleObjectHydrator produces wrong values with inheritance table and simple array type
    6001: Make second level cache query cache rely on entity region timestamp
    6004: Fix hydration in a joined inheritance with simple array or json array


v2.5.4 - Jan 05, 2016

    1568: Identifier is cached with wrong type


v2.5.3 - Dec 25, 2015

    1572: Target entity resolver for DQL
    1573: Merge entity associated to versioned entity
    4884: DDC-4019: Proxy generator is not including PHP7 return type hints
    5547: Correcting minor test case incompatibility with XDebug 2.4.x


v2.5.2 - Nov 23, 2015

Bug

    [DDC-3677] - [GH-1375] DDC-3671 prevent duplicate unique index
    [DDC-3899] - [GH-1507] Fixed wrong property name
    [DDC-3908] - [GH-1510] Fix cache storage related test issues (due to doctrine/cache 1.5.0 changes)
    [DDC-3911] - [GH-1512] Backport of "LimitSubqueryOutputWalker: fix aliasing of property in OrderBy from MappedSuperclass"
    [DDC-3973] - [GH-1540] [DDC-3711] Correct Error on manyToMany with composite primary key + add Tests

Documentation

    [DDC-3938] - [GH-1529] Update Upgrade.md after minor bc break in 2.5.1

Improvement

    [DDC-3978] - [GH-1543] Allow symfony 3.0 components on 2.5


v2.5.1 - Aug 31, 2015

v2.5.0 - Apr 02, 2015

v2.5.0-RC2 - Mar 31, 2015

    DDC-3643 #1352 Fix EntityGenerator RegenerateEntityIfExists logic
    DDC-3645 #1353 DDC-3637 #1347 DDC-3642 #1351 Paginator logic fixes
	(complex queries/sorting/db support)


v2.5.0-RC1 - 25 Mar 2015

    DDC-3632 #1345 Fix crashes in ConvertMappingCommand and GenerateEntitiesCommand when using entities with joined table inheritance
    DDC-3634 #1346 Fix: generated IDs are converted to integer even when they are big integers
    DDC-3630 DDC-3621 #1343 Support embeddables in partial object query expression
    DDC-3623 DDC-3629 #1337 #1342 Paginator functional tests and sorting corrections
    DDC-2224 DDC-3625 #1339 Honor convertToDatabaseValueSQL() in DQL query parameters and caches


v2.5.0-beta1 - 20 Mar 2015

    DDC-3452 Embeddables Support for ClassMetadataBuilder
    DDC-3551 Load platform lazily in ClassMetadataFactory to avoid database connections.
    DDC-3258 Improve suport for composite primary keys and assocations as keys.
    DDC-3554 Allow to recreate DQL QueryBuilder from parts.
    DDC-3461 Allow setting association as primary key in ClassMetadataBuilder API with makePrimaryKey().
    DDC-3587 Added programmatical support to define indexBy on root aliases.
    DDC-3588 Add support for seconds in DATE_ADD DQL function.
    DDC-3585 Fix instantiation of nested embeddables.
    DDC-3607 Add support for orphan removal in ClassMetadataBuilder/AssocationBuilder
    DDC-3597 Add support for embeddables in MappedSuperclasses.
    DDC-3616 Add support for DateTimeImmutable in Query parameter detection.
    DDC-3622 Improve support for objects as primary key by casting to string in UnitOfWork.
    DDC-3619 Update IdentityMap when entity gets managed again fixing spl_object_hash collision.
    DDC-3608 Fix bug in EntityGenerator to XML/YML with default values.
    DDC-3590 Fix bug in PostgreSQL with naming strategy of non-default schema tables.
    DDC-3566 Fix bug in Second-Level Cache with association identifiers.
    DDC-3528 Have PersistentCollection implement AbstractLazyCollection from doctrine/collections.
    DDC-3567 Allow access to all aliases for a QueryBuilder.


v2.5.0-alpha2 - 28 Jan 2015

    DDC-3517 GH-1265 Fix error undefined index "targetEntity"
    DDC-3516 GH-1264 Add Changelog/Migration to 2.5 documentation chapter.
    DDC-3520 DDC-3521 GH-1269 self-update composer before install
    DDC-3526 GH-1273 Incorrect @throws doc. in getSingleScalarResult
    DDC-3465 GH-1232 Explicit example of partial indexes
    DDC-3300 DDC-3503 GH-1130 GH-1232 Resolve target entity also in discriminator map (allows interfaces and custom names in discriminator map)
    DDC-3378 GH-1176 Support merging entities with composite identities defined through to-one associations
    DDC-3533 GH-1279 Fixed typos and grammar in the second level cache documentation
    DDC-3343 DDC-3536 DDC-3544 GH-1281 GH-1288 GH-1169 Entities should not be deleted when using EXTRA_LAZY and one-to-many
    DDC-3538 DDC-3519 GH-1283 GH-1267 Reverted #1220 <https://github.com/doctrine/doctrine2/pull/1220>_, fixed order in pagination logic
    DDC-2704 DDC-3524 GH-1272 merge inherited transient properties - merge properties into uninitialized proxies
    DDC-3346 DDC-3531 DDC-3534 GH-1280 GH-1277 fixed findOne* operations when using a EAGER *-to-many association
    DDC-3541 GH-1286 Removing XDebug from non-coverage builds
    DDC-3546 GH-1289 Improve test suite performance


v2.5.0-alpha1 - 18 Jan 2015

Issue summary:
New Feature

    [DDC-93] - It would be nice if we could have support for ValueObjects
    [DDC-1149] - Optimize OneToMany and ManyToMany without join
    [DDC-1216] - A way to mark an entity to always use result cache. Like @UseResultCache class annotation.
    [DDC-1247] - Implement AnnotationDriver::addExcludePath
    [DDC-1563] - Result cache for repository queries
    [DDC-2021] - Array Data in Member OF
    [DDC-2773] - [GH-835] Value objects (Based on #634)
    [DDC-2959] - [GH-937] Extra-lazy for containsKey on collections
    [DDC-3117] - [GH-1027] Support for Partial Indexes for PostgreSql and Sqlite
    [DDC-3161] - [GH-1054] SQLFilters enahancements
    [DDC-3186] - [GH-1069] added method to be able to reuse the console application
    [DDC-3231] - [GH-1089] Entity repository generator default repository
    [DDC-3385] - [GH-1181] Support fetching entities by aliased name
    [DDC-3462] - [GH-1230] Allow dumping SQL query when passing DQL on cli

Bug

    [DDC-1624] - Locking CTI doesnt work on SQL Server
    [DDC-2310] - Recent changes to DBAL SQL Server platform lock hinting breaks ORM SqlWalker in DQL queries with joins
    [DDC-2352] - [GH-615] Update SqlWalker.php
    [DDC-2372] - [GH-632] entity generator - ignore trait properties and methods
    [DDC-2504] - [GH-696] extra lazy joined test
    [DDC-2559] - [GH-728] Color message like the update tools
    [DDC-2561] - [GH-729] add missing hint about lifecycle callback
    [DDC-2562] - [GH-730] To avoid "SpacingAfterParams" error with PHPCS Symfony2 coding standard
    [DDC-2566] - [GH-732] Update working-with-associations.rst
    [DDC-2568] - [GH-733] Update Parser.php
    [DDC-2572] - ResolveTargetEntityListener does not work as documented.
    [DDC-2573] - [GH-735] Fix proxy performance test
    [DDC-2575] - Hydration bug
    [DDC-2580] - [GH-739] Fix DDC-2579
    [DDC-2581] - [GH-740] Synchronized support of FilterCollection with ODM by adding missing method
    [DDC-2584] - [GH-743] Added coverage to DDC-2524. Updated DDC-1719 to fix related DBAL bug.
    [DDC-2588] - [GH-745] Update basic-mapping.rst
    [DDC-2591] - [GH-747] fix some file mode 755->644
    [DDC-2592] - [GH-748] Add hour to DATE_ADD and DATE_SUB
    [DDC-2603] - [GH-751] Added coverage for querying support during postLoad.
    [DDC-2604] - [GH-752] ORM side fixes.
    [DDC-2616] - [GH-759] Fixed out of sync code examples in getting-started.rst
    [DDC-2624] - ManyToManyPersister fails to handle cloned PeristentCollections
    [DDC-2652] - [GH-777] Fixed typo in mapping documentation
    [DDC-2653] - [GH-778] Fixed typo in property mapping
    [DDC-2654] - [GH-779] Fixed grammar in custom data types
    [DDC-2656] - [GH-780] [DCC-2655] Don't let getOneOrNullResult throw NoResultException
    [DDC-2668] - DQL TRIM function is not converted into TRIM SQL correctly
    [DDC-2673] - [GH-785] Update dql-custom-walkers.rst
    [DDC-2676] - [GH-786] Minor updates while reading the basic-mapping page
    [DDC-2678] - [GH-787] Update DDC719Test.php to be compatible with MsSQL
    [DDC-2681] - [GH-790] HHVM compatibility: func_get_args
    [DDC-2682] - [GH-791] Implemented "contains" operator for Criteria expressions
    [DDC-2683] - [GH-792] [DDC-2668] Fix trim leading zero string
    [DDC-2689] - Doctrine ORM test suite failing on MySQL
    [DDC-2690] - Doctrine ORM test suite failing on PostgresSQL
    [DDC-2696] - [GH-795] Update query-builder.rst
    [DDC-2699] - [GH-797] CS fixes
    [DDC-2700] - [GH-798] Identifier can be empty for MappedSuperclasses
    [DDC-2702] - [GH-799] remove unused test case
    [DDC-2706] - [GH-801] Update SqlWalker.php fixed wrong GROUP BY clause on SQL Server platform
    [DDC-2707] - [GH-802] Respect unsigned fields when tables get converted to entities.
    [DDC-2711] - [GH-803] Appended newline to (newly) generated files for PSR2 compatibility
    [DDC-2716] - [GH-808] Second level cache
    [DDC-2718] - [GH-809] Fix DDC-1514 test
    [DDC-2720] - [GH-811] Update SingleScalarHydrator error message
    [DDC-2722] - [GH-812] [Doc] add direct links to dbal and dql documentation
    [DDC-2728] - [GH-815] Remove unused use statement
    [DDC-2732] - [GH-816] Options not respected for ID Fields in XML Mapping Driver
    [DDC-2737] - [GH-817] Removed "minimum-stability" : "dev" from composer.json
    [DDC-2738] - [GH-818] Clarified tutorial context in section introducing `orm:scehma-tool:*` commnads
    [DDC-2740] - [GH-819] Fixes a Fatal Error when using a subexpression in parenthesis
    [DDC-2741] - [GH-820] Added support for field options to FieldBuilder
    [DDC-2750] - [GH-822] DDC-2748 DQL expression "in" not working with Collection
    [DDC-2753] - [GH-824] s/PostgreSQLPlatform/PostgreSqlPlatform/
    [DDC-2757] - Manual transcation handling not possible when transaction fails, documentation gives wrong example
    [DDC-2759] - ArrayHydration: Only first entity in OneToMany association is hydrated
    [DDC-2760] - [GH-827] Added a failing test case for DDC-2759.
    [DDC-2764] - An orderBy on Criteria leads to DQL semantical error
    [DDC-2765] - [GH-830] [DDC-2764] Prefix criteria orderBy with rootAlias
    [DDC-2769] - [GH-832] Added "readOnly: true" to YAML reference
    [DDC-2771] - [GH-834] Add example use of repositoryClass in YAML
    [DDC-2774] - [GH-836] Update annotations-reference.rst
    [DDC-2775] - Bug with cascade remove
    [DDC-2782] - [GH-842] Added EntityManager query creation tests
    [DDC-2790] - [GH-845] Don't compute changeset for entities that are going to be deleted
    [DDC-2792] - [GH-846] joinColumn is not required in manyToMany
    [DDC-2798] - [GH-849] Error with Same Field, Multiple Values, Criteria and QueryBuilder
    [DDC-2799] - [GH-850] Event listener to programmatically attach entity listeners.
    [DDC-2811] - [GH-854] fix relative path to doctrine/common
    [DDC-2812] - [GH-856] Fix dependency for tests/Doctrine/Tests/ORM/Functional/ReferenceProxyTest.php
    [DDC-2827] - [GH-864] Updated parser to support aggegrate functions in null comparisons
    [DDC-2831] - [GH-866] Mentioning the 'refresh' cascading property in the documentation list
    [DDC-2843] - SchemaTool update SQL always contains queries to set default value on columns, even if they haven't changed.
    [DDC-2847] - [GH-871] XCache cannot be flushed on the CLI -> for pretty much the same reason as APC
    [DDC-2853] - [GH-873] Try running unit tests on HHVM
    [DDC-2855] - [GH-875] Adding tests that confirm that DDC-2845 is fixed
    [DDC-2856] - [GH-876] Fixing wrong key for allowing HHVM failures
    [DDC-2862] - When update cached entitiy, entity lost OneToOne relationship
    [DDC-2866] - [GH-883] [DDC-2862] Fix non initialized association proxy
    [DDC-2867] - [GH-884] [SLC] Fix cache misses using one-to-one inverse side
    [DDC-2869] - [GH-886] [DDC-1256] Fix applying ON/WITH conditions to first join in Class Table Inheritance
    [DDC-2875] - [GH-890] [DBAL-563] Add general IDENTITY generator type support for sequence emulating platforms
    [DDC-2876] - [GH-891] Allow to not generate extra use
    [DDC-2878] - [GH-893] autoGenerate arg from bool to int
    [DDC-2880] - [GH-894] Fix typos - QueryBuilder
    [DDC-2884] - [GH-896] Ensure <cascade/> elements preceed <join-columns/>
    [DDC-2885] - [GH-897] Respected 'inheritanceType' at Entity level
    [DDC-2889] - [GH-900] Fix connection mock fetchColumn signature
    [DDC-2890] - Paginator generates invalid sql for some dql with setUseOutputWalkers(false) and $fetchJoinCollection = true
    [DDC-2903] - [GH-906] removed erroneous tip
    [DDC-2907] - [GH-907] [DDC-1632] OneToMany Fetch eager
    [DDC-2908] - [GH-908] [DDC-2862] Fix lazy association load
    [DDC-2913] - [GH-909] Fix DatabaseDriverTest on SQL Server
    [DDC-2914] - [GH-910] [DDC-2310] Fix SQL generation on table lock hint capable platforms
    [DDC-2916] - [GH-911] fix foreach coding style
    [DDC-2919] - LockMode::NONE evaluation inconsistencies in ORM
    [DDC-2921] - [GH-912] Avoid PersistentCollection::isEmpty() to fully load the collection.
    [DDC-2931] - OneToOne self-referencing fails when loading referenced objects
    [DDC-2933] - [GH-917] DDC-2931
    [DDC-2934] - [GH-918] Fix use of function in OrderBy
    [DDC-2935] - [GH-919] tests for DDC-2890
    [DDC-2937] - [GH-920] SingleScalarHydrator reports ambiguous error.
    [DDC-2943] - Paginator not work with second level cache in Doctrine 2.5
    [DDC-2946] - [GH-926] Feature/console em helper interface
    [DDC-2947] - [GH-927] s/EntityManager/EntityManagerInterface/ in a few places
    [DDC-2948] - [GH-928] Support PHPUnit 3.8+ Compatibility
    [DDC-2952] - [GH-932] [DDC-2919] Make lock mode usage consistent
    [DDC-2956] - [GH-934] faild test with multiple HINT_CUSTOM_TREE_WALKERS
    [DDC-2957] - [GH-935] Remove incorrect (outdated) validation for public fields in SchemaValidator
    [DDC-2958] - [GH-936] [WIP] Making testing dependencies explicit
    [DDC-2961] - [GH-938] Missing join-tables added in example
    [DDC-2967] - [GH-943] Validate embeddables do not contain other embeddables.
    [DDC-2968] - [GH-944] Fixed InputOption modes
    [DDC-2969] - [GH-945] Fix CS
    [DDC-2971] - [GH-947] Cleaned up further unused imports.
    [DDC-2974] - [GH-950] Can cache empty collections
    [DDC-2975] - [GH-951] More informational entity not found exception
    [DDC-2976] - [GH-952] Add DB-level onDelete CASCADE example
    [DDC-2989] - ORM should allow custom index names for foreign associations.
    [DDC-2996] - UnitOfWork::recomputeSingleEntityChangeSet() will not add a new change set
    [DDC-2997] - [GH-960] allow passing EntityManagerInterface when creating a HelperSet
    [DDC-2998] - [GH-961] [DDC-2984] Provide TestCase to reproduce bug
    [DDC-3002] - [GH-964] [SLC][DDC-2943] Disable slc for pagination queries
    [DDC-3003] - [GH-965] [SLC] Add support for criteria
    [DDC-3008] - [GH-967] [SLC] Add query builder options
    [DDC-3009] - [GH-968] Test: Add failing test
    [DDC-3010] - [GH-969] [Doc] added note about Criteria limits on PersistentCollection
    [DDC-3012] - [GH-971] [SLC] Fix query association proxy
    [DDC-3013] - [GH-972] Capitalize @GeneratedValue (annotations-reference.rst)
    [DDC-3015] - [GH-974] [SLC] Resolve association cache entry
    [DDC-3018] - DQL “NEW” Operator and Literal type "String"
    [DDC-3021] - [GH-976] Add cache invalidation strategy to AbstractQuery
    [DDC-3023] - [GH-977] Fix wrong annotation
    [DDC-3028] - [GH-978] [DDC-2987] Enable empty prefixes for inlined embeddable
    [DDC-3033] - Regression in computeChangeSets (ManyToMany relation)
    [DDC-3038] - [GH-982] Failing Test (since commit 53a5a48)
    [DDC-3041] - [GH-984] Use boolean values for 'unique' attribute
    [DDC-3042] - select issue field names with numbers
    [DDC-3045] - SQL Injection in Persister API
    [DDC-3047] - XML Exporter driver does not export association fetch-mode
    [DDC-3049] - [GH-988] Exporter support for association fetch modes
    [DDC-3054] - [GH-991] Ability to define custom functions with callback instead of class name
    [DDC-3058] - [GH-993] Update JoinColumn.php
    [DDC-3060] - [GH-995] Allow cascaded clearing of associated Entities
    [DDC-3061] - [GH-996] [DDC-3027] Embedded in MappedSuperclass
    [DDC-3062] - [GH-997] [FIX] Allow to use ManyToMany with all operators
    [DDC-3065] - Generated 'IN' clause doesn't handle 'null' values (needs to add 'IS NULL' check)
    [DDC-3067] - [GH-999] DDC-3065 null value in in criteria support
    [DDC-3069] - [GH-1000] [DDC-3068] EntityManager::find accept array of object as id
    [DDC-3071] - [GH-1002] Fixed wrongly initialized property.
    [DDC-3074] - [GH-1004] Removed all useless occurrence of require_once TestInit.php
    [DDC-3075] - [GH-1005] Added support of the subselect expressions into NEW expressions
    [DDC-3078] - Doctrine\ORM\Cache::__construct is in an interface
    [DDC-3080] - [GH-1008] DDC-3078 SLC Cache interface ctor removal
    [DDC-3081] - [GH-1009] HHVM compatibility
    [DDC-3082] - [GH-1010] Fixed validation message
    [DDC-3085] - NULL comparison are not supported for result variables in the HAVING clause
    [DDC-3092] - [GH-1012] Ddc 3078 slc cache interface ctor removal
    [DDC-3093] - [GH-1013] Remove SimpleXmlElement hack
    [DDC-3095] - [GH-1014] Update second level cache doc
    [DDC-3100] - [GH-1018] DBAL-878 Wrong mapping type
    [DDC-3103] - Is embedded class information in ClassMetadata is not stored when serializing.
    [DDC-3106] - [GH-1023] [DDC-3027] Avoid duplicated mapping using Embedded in MappedSuperclass
    [DDC-3107] - [GH-1024] [Persister] Remove the insertSql cache
    [DDC-3108] - Criteria cannot reference a joined tables' fields when used with an ORM QueryBuilder
    [DDC-3118] - [GH-1028] Add method getAssociationsByType to ClassMetadata
    [DDC-3120] - Warning: Erroneous data format for unserializing PHP5.6+
    [DDC-3123] - Extra updates are not cleaned after execution
    [DDC-3124] - [GH-1030] DDC-3123 extra updates cleanup
    [DDC-3129] - [GH-1032] Add support for optimized contains
    [DDC-3143] - [GH-1041] Allow all EntityManagerInterface implementations
    [DDC-3151] - [GH-1048] Fix typo in exception message
    [DDC-3152] - Generating methods does not check for existing methods with different case
    [DDC-3160] - Regression in reComputeSingleEntityChangeset
    [DDC-3177] - [GH-1063] singularize variable name on add/remove methods for EntityGenerator
    [DDC-3184] - Invalid hydration of entities using ManyToOne relation via queryBuilder
    [DDC-3190] - [GH-1071] Setup::createConfiguration breaks Cache interface contract
    [DDC-3191] - [GH-1072] Fix attempt of traversing bool in FileLockRegion
    [DDC-3192] - Custom types do not get converted to PHP Value when result is gotten from custom query
    [DDC-3198] - [GH-1075] Fixed query cache id generation: added platform to hash
    [DDC-3199] - [GH-1076] Fix switch non-uniform syntax
    [DDC-3210] - [GH-1080] possible fix for DDC-2021
    [DDC-3214] - [GH-1082] added more informative error messages when invalid parameter count
    [DDC-3223] - Failing test (get id return string type)
    [DDC-3225] - [GH-1087] Remove the error control operator
    [DDC-3227] - [GH-1088] Fix the composer autoload paths for the doctrine CLT
    [DDC-3233] - [GH-1092] Arbitrary Join count walkers solution
    [DDC-3237] - [GH-1096] Changes for grammar and clarity
    [DDC-3239] - [GH-1097] `expandParameters`/`getType` in BasicEntityPersister seems to really cover just few cases
    [DDC-3240] - [GH-1098] #DDC-1590: Fix Inheritance in Code-Generation
    [DDC-3254] - [GH-1111] Fix inheritance hierarchy wrong exception message
    [DDC-3269] - [GH-1120] [DDC-3205] Metadata info
    [DDC-3272] - EntityGenerator writes 'MappedSuperClass' instead of 'MappedSuperclass'
    [DDC-3278] - [GH-1123] Fixed the structure of the reverse-engineered mapping
    [DDC-3283] - [GH-1125] Update improving-performance.rst
    [DDC-3288] - [GH-1126] Fixed new line in docblock
    [DDC-3293] - XML Mappings disallow disabling column prefix for embeddables
    [DDC-3302] - [GH-1132] DDC-3272 entity generator mapped superclass casing
    [DDC-3310] - [GH-1138] Join column index names
    [DDC-3318] - [GH-1143] Fixed a bug so that a versioned entity with a oneToOne id can be created
    [DDC-3322] - [GH-1146] Allow orderBy to reference associations
    [DDC-3336] - Undefined property: Doctrine\ORM\Query\AST\SimpleArithmeticExpression::$field
    [DDC-3350] - [GH-1160] #1159 - multiple entity managers per repository factory should be supported
    [DDC-3355] - [GH-1164] [QueryBuilder] Remove unused method parameters to run on HHVM/PHP7
    [DDC-3358] - [GH-1166] Fixing HHVM+XSD validation tests as of documented HHVM inconsistencies
    [DDC-3368] - [GH-1172] Don't initialize detached proxies when merging them.
    [DDC-3370] - [GH-1173] Fix merging of entities with associations to identical entities.
    [DDC-3379] - [GH-1177] Ensure metadata cache is not ArrayCache in production
    [DDC-3380] - [GH-1178] Fixing associations using UUIDs
    [DDC-3387] - [GH-1182] #1086 identifier type in proxies
    [DDC-3394] - UOW CreateEntity failure with zerofill columns
    [DDC-3404] - [GH-1188] Fixed counting exception
    [DDC-3419] - [GH-1196] Inherit indexes from mapped superclass
    [DDC-3425] - [GH-1202] Checks key exists rather than isset
    [DDC-3427] - Doctrine\ORM\Mapping\ClassMetadataFactory explicitly accepts EntityManager
    [DDC-3428] - [GH-1204] Fix sequence-generator in MetaData exporter for XML Driver.
    [DDC-3429] - [GH-1205] Hotfix - #1200 symfony 2.7 deprecation fixes
    [DDC-3430] - [GH-1206] matching should not change critera
    [DDC-3431] - [GH-1207] Embedded classes reflection new instance creation with internal PHP classes
    [DDC-3432] - [GH-1208] DDC-3427 - class metadata factory should accept `EntityManagerInterface` instances
    [DDC-3433] - [GH-1210] DDC-3336 - undefined property with paginator walker and scalar expression in ORDER BY clause
    [DDC-3434] - LimitSubqueryOutputWalker does not retain correct ORDER BY expression fields when dealing with HIDDEN sort fields
    [DDC-3435] - [GH-1211] DDC-3434 - paginator ignores `HIDDEN` fields in `ORDER BY` query
    [DDC-3436] - [GH-1212] [DDC-3108] Fix regression where join aliases were no longer accessible in Criteria expressions
    [DDC-3437] - [GH-1213] fix instantiation of embedded object in ReflectionEmbeddedProperty
    [DDC-3439] - [GH-1216] test XML export driver, the field options, for #1214
    [DDC-3454] - [GH-1224] Updated setParameters function for not replace all parameters
    [DDC-3466] - [GH-1233] [Minor] Refactoring to avoid duplicate code
    [DDC-3470] - [GH-1235] Consistent return type confirming with interface
    [DDC-3478] - [GH-1239] Fix index duplication for unique association join columns
    [DDC-3482] - [GH-1242] Attempting to lock a proxy object fails as UOW doesn't init proxy first
    [DDC-3493] - New (PHP 5.5) "class" keyword - wrong parsing by EntityGenerator
    [DDC-3494] - [GH-1250] Test case for "class" keyword
    [DDC-3502] - [GH-1256] DDC-3493 - fixed EntityGenerator parsing for php 5.5 "::class" syntax
    [DDC-3506] - [GH-1259] Hotfix: Cache region should not mutate injected cache instance settings
    [DDC-3513] - [GH-1262] Fixes the broken DQL command

Documentation

    [DDC-2510] - [GH-700] Update getting-started.rst
    [DDC-2511] - [GH-701] list_bugs.php needs to call to getters for protected vars
    [DDC-2549] - [GH-721] Updated batch-processing link extension
    [DDC-2553] - [GH-723] Remove extra semicolon before ->setParameter() calls
    [DDC-2571] - [GH-734] Cleaned up documentation
    [DDC-2620] - [GH-762] YAML mapping documentation of uniqueConstraint
    [DDC-2755] - [GH-825] Spelling fix
    [DDC-2777] - [GH-838] Spelling fix
    [DDC-2778] - [GH-839] Spelling fix
    [DDC-2801] - [GH-851] Documentation about how to use INSTANCE OF in inheritance
    [DDC-2819] - [GH-860] Mention SQL Anywhere in basic mapping documentation
    [DDC-2821] - [GH-862] Added a note about changing the fetch mode for to-many relations
    [DDC-2834] - [GH-868] Added documentation section for Memcached
    [DDC-2846] - [GH-870] Documenting interface methods (based on entity manager)
    [DDC-2848] - [GH-872] Doctrine 2.4 now supports SQLite ALTER TABLE
    [DDC-2873] - [GH-888] Add an example to doc of YAML mapping
    [DDC-2887] - [GH-898] Added note to STI
    [DDC-2925] - [GH-913] Added exception class names
    [DDC-2928] - [GH-915] Improved DQL's "new" operator documentation
    [DDC-2963] - [GH-940] Fixed typo & horizontal scrolling
    [DDC-2979] - [GH-953] Update doc with latest news about extra lazy assoc
    [DDC-2985] - [GH-955] iteration risk note
    [DDC-3019] - [GH-975] Added info about automatic discriminator map
    [DDC-3048] - [GH-987] Fixes typo in dql-doctrine-query-language.rst
    [DDC-3053] - [GH-990] Typo in documentation
    [DDC-3057] - [GH-992] Fixed typos
    [DDC-3059] - [GH-994] Update EntityGenerator comment
    [DDC-3073] - @Column options
    [DDC-3077] - [GH-1007] Minor dockblock change
    [DDC-3086] - [GH-1011] Single quotes can't nest
    [DDC-3097] - [GH-1015] Add ExpressionBuilder::contains() to docs
    [DDC-3111] - [GH-1025] Removed duplicate entry in documentation TOC.
    [DDC-3127] - [GH-1031] Documentation for #991
    [DDC-3131] - [GH-1034] Update caching.rst
    [DDC-3139] - [GH-1038] Add documentation for the `HIDDEN` keyword in DQL
    [DDC-3140] - [GH-1039] Add yml example to single table inheritance
    [DDC-3144] - [GH-1042] Fix second level cache doc
    [DDC-3145] - [GH-1044] Use of ->andWhere() whithout any ->where() before is valid
    [DDC-3166] - [GH-1058] Drop Unicode character
    [DDC-3168] - [GH-1059] fix spacing for yaml example
    [DDC-3185] - [GH-1068] Fix typo in documentation
    [DDC-3216] - [GH-1083] [DDC-3073] Add documentation about how to map column options
    [DDC-3217] - [GH-1084] Update advanced-field-value-conversion-using-custom-mapping-types.rst
    [DDC-3253] - [GH-1110] Changed table name to be more appropriate.
    [DDC-3261] - Bad link in 34.3 Advanced Configuration - Connection Options
    [DDC-3262] - [GH-1115] Fix wrong variable name
    [DDC-3266] - [GH-1116] [DDC-3265] Fix DocBlock
    [DDC-3292] - [GH-1127] Document embeddables column prefixing
    [DDC-3324] - [GH-1147] Extended the docs for mapping attributes precision and scale
    [DDC-3326] - [GH-1148] [DWEB-118] Fixed small typo in documentation about extra lazy associations
    [DDC-3347] - [GH-1157] Fixing calls of schema-update tools
    [DDC-3348] - [GH-1158] Update QueryBuilder reference documentation.
    [DDC-3351] - [GH-1161] Fixing error with from() parameters in example
    [DDC-3353] - [GH-1163] Update xml-mapping.rst
    [DDC-3388] - [GH-1183] Update tools.rst
    [DDC-3389] - [GH-1184] Postgres SERIAL is not a post-insert identifier generation strategy
    [DDC-3408] - [GH-1190] Document that AUTOGENERATE_ constants are allowed
    [DDC-3411] - [GH-1192] Fixed a very minor typo
    [DDC-3417] - [GH-1195] Correction Events.rs - Entity Listeners Resolver
    [DDC-3420] - [GH-1198] Tables for buttons.
    [DDC-3421] - [GH-1199] minor typo
    [DDC-3456] - [GH-1226] Update Travis badges to use the SVG version
    [DDC-3471] - [GH-1236] Minor docs fix: missing word 'do'
    [DDC-3484] - [GH-1244] Change $this return type to static in AbstractQuery
    [DDC-3499] - [GH-1253] Fix dead link

Improvement

    [DDC-54] - Trigger postLoad events and callbacks after associations have been initialized
    [DDC-1283] - Possible issue with PersistentCollection#getDelete/InsertDiff()
    [DDC-1590] - Fix Inheritance in Code-Generation
    [DDC-1787] - Fix for JoinedSubclassPersister, multiple inserts with versioning throws an optimistic locking exception
    [DDC-1858] - LIKE and IS NULL operators not supported in HAVING clause
    [DDC-2052] - Custom tree walkers are not allowed to add new components to the query
    [DDC-2061] - Matching Criteria on a PersistentCollection only works on OneToMany associations
    [DDC-2128] - [GH-507] Now MetaDataFilter takess also regexp. For example whern you want to
    [DDC-2183] - Second Level Cache improvements
    [DDC-2210] - PHP warning in ProxyFactory when renaming proxy file
    [DDC-2217] - Return a lazy collection from PersistentCollection::match($criteria)
    [DDC-2319] - [GH-590] DQL Query: process ArrayCollection values to ease development
    [DDC-2534] - [GH-711] Coveralls code coverage
    [DDC-2538] - [GH-713] Quick grammar fix
    [DDC-2544] - [GH-717] Allow query parameters starting with an underscore
    [DDC-2546] - [GH-719] Access properties via static:: instead of self::.
    [DDC-2615] - LIKE operator not supported in HAVING clause
    [DDC-2636] - Handle SQLite with dot notation in @Table and @JoinTable
    [DDC-2639] - [GH-771] Added indexBy option to createQueryBuilder
    [DDC-2770] - [GH-833] Generate-Entities-Console-Command: Adding an 'avoid backup' flag
    [DDC-2789] - [GH-844] Teach orm:validate-schema to --skip-mapping and --skip-sync
    [DDC-2794] - the Paginator does not support arbitrary join
    [DDC-2814] - [GH-858] lifts an unnecessary restriction on ResultSetMappingBuilder
    [DDC-2824] - [GH-863] The new configuration option: defaultQueryHints
    [DDC-2861] - [GH-881] Fix persistence exception on a table with a schema on a platform without schema support
    [DDC-2865] - [GH-882] Efficient counting on Criteria
    [DDC-2868] - [GH-885] Add support for ManyToMany Criteria
    [DDC-2926] - [GH-914] added license badge
    [DDC-2970] - [GH-946] Cleaned up unused imports
    [DDC-2981] - Multi get for second level cache (Doctrine Cache related)
    [DDC-2982] - [GH-954] Multi Get support for Second Level Cache
    [DDC-2984] - Support Custom DBAL types to be used as identifiers
    [DDC-2991] - [GH-957] makes doctrine less dependent upon the symfony yaml component
    [DDC-2999] - [GH-962] Stop executeDeletions when there is nothing to to delete anymore
    [DDC-3000] - [GH-963] SQLFilter -- allows to check if a parameter was set
    [DDC-3004] - [GH-966] Simplify build matrix
    [DDC-3005] - Events::postLoad fires without filled associations
    [DDC-3014] - [GH-973] Added index flags support in annotation, xml & yaml mapping drivers.
    [DDC-3032] - [GH-980] Added options attribute export to Annotation, Xml & Yaml exporters.
    [DDC-3039] - [GH-983] Added MEMBER OF and INSTANCE OF to ExpressionBuilder
    [DDC-3068] - EntityManager::find does not accept an array of object as a primary key
    [DDC-3070] - [GH-1001] [DDC-3005] Defer invoking of postLoad event to the end of hydration cycle.
    [DDC-3076] - [GH-1006] Handling invalid discriminator values
    [DDC-3114] - [GH-1026] Remove some redundant clauses
    [DDC-3133] - [GH-1036] Move space addition to implementation.
    [DDC-3138] - [GH-1037] I can't look at those semicolons, sorry ;-)
    [DDC-3150] - [GH-1047] Minor grammatical corrections
    [DDC-3178] - [GH-1064] remove on-update from join-column
    [DDC-3249] - [GH-1105] Add support for nesting embeddables
    [DDC-3257] - [GH-1112] DefaultRepositoryFactory: single repository for aliased entities
    [DDC-3274] - Improve schema validator error message
    [DDC-3275] - [GH-1121] [DDC-3274] Improve schema validator error message for invalid bi-directional relations
    [DDC-3276] - [GH-1122] Support arithmetic expressions in `COUNT()`
    [DDC-3300] - [GH-1130] [WIP] Added resolve entities support in discrim. map
    [DDC-3304] - [EntityGenerator] Embeddables properties and methods are broken
    [DDC-3305] - [GH-1133] [Embeddables] Improved exception message
    [DDC-3307] - [GH-1135] [DDC-3304] Add support for embeddables in entity generator
    [DDC-3418] - Indexes not inherited from mapped superclass
    [DDC-3457] - [GH-1227] Ensure query cache is not ArrayCache in production
    [DDC-3477] - [GH-1238] Avoid prefixing columns when `false` is assigned to `column-prefix`
    [DDC-3479] - [GH-1240] Include IDs in the exception message to ease debugging
    [DDC-3483] - [GH-1243] Fixed phpunit tests autoload requirements and moved to composer autoload-dev
    [DDC-3486] - [GH-1245] Implemented support for one to many extra lazy with joined inheritance.
    [DDC-3487] - [GH-1246] [WIP] Moved delete() and update() to proper locations.
    [DDC-3490] - [GH-1248] improved error handling for invalid association values #2
    [DDC-3492] - [GH-1249] Support for extra lazy get for both owning and inverse side on many to many associations.
    [DDC-3495] - [GH-1251] travis: optimize to run coverage only once
    [DDC-3496] - [GH-1252] Include className in calls to NamingStrategy joinColumnName method
    [DDC-3501] - [GH-1255] Cleanup: PHP 5.3 support end
    [DDC-3503] - [GH-1257] Resolve target entity also in discriminator map (allows interfaces and custom names in discriminator map)
    [DDC-3504] - [GH-1258] Classify persisters into more granular namespaces.
    [DDC-3514] - LimitSubqueryOutputWalker should not duplicate orderBy clauses
    [DDC-3515] - [GH-1263] #1223 DDC-3453 - make `EntityManager` constructor `public`

Sub-task

    [DDC-2850] - Allow cascaded clearing of Entities associated to the indicated Entity


2.4.7 - 16 Dec 2014

    925: DDC-2310 DDC-2675 - Fix SQL generation on table lock hint capable platforms DDC-2310 DDC-2675
    1191: DDC-3409 DDC-2846 - Documenting interface methods (based on entity manager) DDC-3409 DDC-2846
    1188: DDC-3404 - Fixed Paginator parameter counting exception DDC-3404
    1210: DDC-3336 - Undefined property: Doctrine\ORM\Query\AST\SimpleArithmeticExpression::$field DDC-3336
    1211: DDC-3434 - Paginator ignores HIDDEN fields in ORDER BY query DDC-3434
    1202: DDC-3425 - Checks key exists rather than isset - allow null values in column options DDC-3425


v2.4.6 - 6 Oct 2014

    1154: PHP 5.6 internal classes/Serializable serialization fix DDC-3120 DDC-3339


v2.4.5 - 22 Sep 2014

    1142: func_get_args() call order fix for HHVM bug DDC-3317


v2.4.4 - 10 Jul 2014

    #1074 DDC-2996 DDC-3160 DDC-3208 Regression in change set state after UnitOfWork::recomputeSingleEntityChangeSet()

v2.4.3 - 10 Jun 2014

v2.4.2 - 8 Feb 2014

v2.4.1 - 12 Nov 2013

v2.4.0 - 7 Sep 2013

[DDC-1844] - [GH-360] [DDC-1840] Implemented parameters as a collection.
[DDC-1884] - leftJoin via composite key part not hydrated if joining table solely consists of identifiers
[DDC-1995] - "Query Exception: Invalid parameter number: number of bound variables does not match number of tokens" when using an "Instance Of" expression
[DDC-1998] - Problem when deleting with EntityManager->remove($entity)
[DDC-2000] - [GH-431] [ORM] Fix double semicolon
[DDC-2016] - DQL Parser fails in select clause
[DDC-2019] - addOrderBy function incomplete
[DDC-2020] - [GH-440] The schema tool now doesn't add a foreign constraint when subclassess of...
[DDC-2044] - [GH-455] Fixed unique-constraint name in XML Exporter
[DDC-2047] - [GH-456] Optimize autoload prefix in composer.json
[DDC-2049] - [GH-458] Use cascade=all if all cascade options set
[DDC-2051] - after filtering an association by using ->matching(Criteria) original association changes
[DDC-2054] - [GH-461] [SchemaValidator] Fix typo
[DDC-2062] - [GH-466] Use protected so EntityGenerator can be extended
[DDC-2083] - [GH-482] user can set its own commands in the cli-config.php file
[DDC-2090] - MultiTableUpdateExecutor works incorrect with query cache enabled
[DDC-2091] - [GH-486] Fix DDC-2084
[DDC-2106] - Notice trying to match a Criteria referencing a managed entity not yet persisted
[DDC-2132] - [GH-509] SchemaTool ignoring 'fixed' option
[DDC-2136] - convert-mapping can't create YML from Annotation when Id column is a OneToOne relationship
[DDC-2137] - [GH-510] CS on QueryBuilder
[DDC-2138] - Foreign Keys in STI are wrong when same field is reused in different classes.
[DDC-2142] - [GH-513] Enumeration support
[DDC-2151] - [GH-515] Fixes sandbox cli: The helper "em" is not defined.
[DDC-2153] - [GH-517] Fix for DDC-1765
[DDC-2169] - [GH-524] EntityManagerDecorator base class as an extension point for EntityManager
[DDC-2172] - GENERATOR_TYPE_UUID missing in EntityGenerator.php
[DDC-2173] - [GH-525] Ensure onFlush and postFlush events are always called Edit
[DDC-2174] - [GH-526] [DDC-2172] Fix EntityGenerator get literal type
[DDC-2181] - [GH-528] Documentation fixes
[DDC-2188] - DQL arithmetic priority is not considered in expression 'a/(b*c)'
[DDC-2201] - [GH-537] fixed problems with joined inheritance and composite keys
[DDC-2205] - Negative Values in Case Then expressions
[DDC-2208] - CASE WHEN ... WHEN doesn't work
[DDC-2209] - [GH-540] [DDC-2208] Fix DDC-2208
[DDC-2214] - extra single quotation in sql when using EntityRepository::findBy
[DDC-2234] - WHERE <> IS NULL ... doesn't work
[DDC-2235] - Single table inheritance discriminator in WHERE when using arbitrary join syntax
[DDC-2247] - [GH-551] [DDC-2234] FUNCTION() IS NULL comparison
[DDC-2252] - Trying to delete ManyToMany relatrionship with composite keys.
[DDC-2256] - [GH-554] Fixed ObjectHydrator when namespace alias is given.
[DDC-2268] - Lexer error using string functions inside CASE WHEN
[DDC-2272] - [GH-565] Removed an unused local variable.
[DDC-2273] - [GH-566] Added missing return statement to AbstractCommand.
[DDC-2274] - [GH-567] Removed outdated methods in DatabasePlatformMock
[DDC-2276] - [GH-569] Hotfix/pre flush event args params
[DDC-2289] - [GH-575] Added YAML configuration example for "Simple Derived Identity" in Docs
[DDC-2291] - [GH-576] Update docs/en/reference/batch-processing.rst
[DDC-2294] - [GH-579] Unit tests: cleanup of outdated / unused / commented out code
[DDC-2304] - [GH-583] accept more than 2 parameters in CONCAT function
[DDC-2306] - Lazy loading associated entity's property causes identity loss when another association is set to fetch="EAGER"
[DDC-2311] - ManyToManyPersister fails to delete when entity uses FK ID
[DDC-2312] - [GH-586] Fix EntityManager doc
[DDC-2326] - [GH-595] Fixed broken code block in documentation
[DDC-2327] - [GH-596] Missing link to a cookbook in the docs
[DDC-2330] - [GH-599] Removed unnecessary "<?php" from the docs
[DDC-2334] - [GH-602] Added $isIdentifierColumn documentation
[DDC-2345] - convertObjectParameterToScalarValue() raises a notice
[DDC-2355] - [GH-618] [DDC-2188] Fix arithmetic priority
[DDC-2356] - [GH-619] [DDC-2090] Fix MultiTableUpdateExecutor with query cache
[DDC-2360] - [GH-622] Import EntityManager from proper namespace
[DDC-2366] - [GH-627] update document on Doctrine cache provider
[DDC-2369] - [GH-630] Hotfix for DDC-2359
[DDC-2385] - [GH-640] [Paginator]Add hidden field ordering for postgresql
[DDC-2392] - [GH-644] Fixed typos
[DDC-2396] - [GH-646] Oracle Pagination bug when ordering is present
[DDC-2407] - AbstractExporter _getIdGeneratorTypeString does not know about the UUID generator
[DDC-2409] - Merge operation tries to add new detached entities to indentity map and load them as proxies
[DDC-2417] - [GH-653] [DDC-2415] Fix CustomIdGenerator inheritance
[DDC-2419] - [GH-655] [DDC-2409] Fix merge association UnitOfWork::STATE_NEW
[DDC-2420] - [GH-656] [DDC-2235] Fix for using a LEFT JOIN onto an entity with single table inheritance
[DDC-2429] - Association-Override Problem in XSD Mapping?
[DDC-2430] - Incorrect results when using ->matching on PersistentCollection
[DDC-2432] - Entity can be initialized even if not found
[DDC-2435] - Column name with number and reserved character creates invalid query
[DDC-2438] - [GH-661] Update annotations-reference.rst
[DDC-2439] - [GH-662] Fixed a code block.
[DDC-2441] - Incorrect SQL Query being generated
[DDC-2442] - [GH-663] Adding failing test to demonstrate DDC-2432
[DDC-2446] - [GH-666] [DDC-2429] Fix xsd definition
[DDC-2451] - Entity listeners class don't work when metadatas are stored in cache
[DDC-2456] - [GH-669] Fixed generating column names for self referencing entity.
[DDC-2457] - [GH-670] [DDC-2451] Fix entity listeners serialization
[DDC-2458] - [GH-671] [DDC-2435] Fix column name with numbers and non alphanumeric characters.
[DDC-2460] - [GH-672] Simplification example
[DDC-2461] - [GH-673] Namespace based command names
[DDC-2470] - Sql Server error in createQuery using ORDER BY and setMaxResults
[DDC-2475] - ORDER BY on existing column is added, not replaced
[DDC-2478] - PersisterException when matching Criteria expression isNull to ArrayCollection
[DDC-2488] - [GH-686] [DDC-2475] Replace OrderBy mapping when OrderByClause is given
[DDC-2493] - [GH-689] [WIP][DDC-1995 ] Support metadata class as parameter for instance of expression
[DDC-2505] - [GH-697] Fix phpDoc syntax in ClassMetadataInfo.php
[DDC-2506] - WITH Conditionals on Class Table Inheritance LEFT JOINs are inserted incorrectly
[DDC-2517] - [GH-703] Clear visitedCollections
[DDC-2521] - [GH-706] [DDC-1398] Extra-lazy get for indexed associations
[DDC-2533] - [GH-710] Fix extra lazy get
[DDC-2539] - ResultVariable cannot be used in Like expressions
[DDC-2542] - [GH-716] Appending the Paginator tree walker hint
[DDC-2548] - [GH-720] Allow to have non-distinct queries
[DDC-2564] - PersistentCollection - coll is not initialized for Collection methods
[DDC-2577] - [GH-737] Skip not mapped public properties in SchemaValidator
[DDC-2578] - [GH-738] Modified Hydrators to be per-query instances instead of a singleton-like approach
[DDC-2579] - BasicEntityPersister - delete bug
[DDC-2582] - [GH-741] Fixed DDC-1884.
[DDC-2587] - [GH-744] Corrected PHP type for "decimal" mapping type
[DDC-2607] - [GH-753] JoinedSubclassPersister doesn't properly bind on some versions of php
[DDC-2610] - [GH-755] corrected English grammar in docblocks
[DDC-2612] - [GH-757] Update resolve-target-entity-listener.rst
[DDC-2614] - [GH-758] Fixed DDC-2235.
[DDC-2623] - [GH-763] Entity generator - trait in parent class
[DDC-2638] - [GH-770] Fix for entity generator discriminator column
[DDC-2640] - [GH-772] DO NOT OVERRIDE CUSTOM TREE WALKERS IN getIterator()
[DDC-1872] - Evaluate @AssocationOverride/@AttributeOverride in context of Traits
[DDC-2265] - [GH-561] fix typo in the documentation
[DDC-2266] - [GH-562] Fix error in QueryBuilder example
[DDC-2358] - [GH-621] [doc] adding some more doc and examples for lifecycle event listeners and subscribers
[DDC-2583] - [GH-742] Cleaned up events.rst
[DDC-2609] - [GH-754] Fixed syntax highlighting in working-with-associations.rst
[DDC-2650] - [GH-775] Update create bug script
[DDC-717] - Do not use files when using proxy autogeneration
[DDC-1245] - Check if Entity implements EventSubscriber to allow access to EM
[DDC-1376] - Foreign key not available to order when using findBy()
[DDC-1398] - loading one item at a time when indexBy and EXTRA_LAZY fetch mode is used on a collection
[DDC-1956] - [GH-413] code refactorings on persister
[DDC-1981] - ProxyFactory does not throw exceptions that are verbose enough (hard to debug)
[DDC-2186] - PreFlushEventArgs not passed by ClassMetadataInfo::invokeLifecycleCallbacks()
[DDC-2187] - [GH-531] use base events
[DDC-2215] - [GH-543] Make doctrine a Light-weight distribution package in Composer
[DDC-2313] - Deep clone for DBAL QueryBuilder
[DDC-2320] - [GH-591] Remove dead code
[DDC-2333] - [GH-601] Add 'contains' comparison
[DDC-2359] - ClassMetadataFactory::wakeupReflection() is called twice
[DDC-2384] - [GH-639] Added abillity to use metacolumn as indexBy
[DDC-1574] - Support operator 'new' in DQL
[DDC-1955] - Support for @EntityListeners
[DDC-1979] - [GH-422] DDC-1574 - "new" operator
[DDC-1980] - [GH-423] DDC-1955 - @EntityListeners
[DDC-2055] - Helper to generate SQL SELECT clause for Native Query
[DDC-2056] - [GH-462] [DDC-2055] Generate SELECT clause from ResultSetMappingBuilder
[DDC-2202] - [GH-538] IDENTITY() Support composite primary key
