[PR #6743] Split ORMException into more fine-grained, better documented and typed exception classes #10118

Open
opened 2026-01-22 16:06:29 +01:00 by admin · 0 comments
Owner

Original Pull Request: https://github.com/doctrine/orm/pull/6743

State: closed
Merged: Yes


This class is too big, and some exceptions could inherit from doctrine/common exceptions instead of this one.

TODO

  • remove unused exception methods
    • entityMissingAssignedIdForField
    • entityMissingForeignAssignedId
    • invalidFindByCall
    • invalidFlushMode
  • notSupported
  • namedNativeQueryNotFound
  • namedQueryNotFound
  • proxyClassesAlwaysRegenerating
  • invalidEntityRepository
  • unknownEntityNamespace
  • entityManagerClosed
  • invalidHydrationMode
  • mismatchedEventManager
  • missingIdentifierField
  • missingMappingDriverImpl
  • unrecognizedIdentifierFields
  • cantUseInOperatorOnCompositeKeys
  • invalidOrientation
  • unexpectedAssociationValue
  • unrecognizedField
  • findByRequiresParameter
  • invalidMagicCall
  • invalidFindByInverseAssociation
  • invalidResultCacheDriver
  • queryCacheNotConfigured
  • metadataCacheNotConfigured
  • queryCacheUsesNonPersistentCache
  • metadataCacheUsesNonPersistentCache

Proposal

method used in class should implement
notSupported Doctrine\ORM\Tools\SchemaTool SchemaToolException
namedNativeQueryNotFound Doctrine\ORM\Configuration ConfigurationException
namedQueryNotFound Doctrine\ORM\Configuration ConfigurationException
proxyClassesAlwaysRegenerating Doctrine\ORM\Configuration ConfigurationException
invalidEntityRepository Doctrine\ORM\Configuration ConfigurationException
unknownEntityNamespace Doctrine\ORM\Configuration ConfigurationException
entityManagerClosed Doctrine\ORM\EntityManager ManagerException
entityMissingAssignedIdForField no usages /dev/null
entityMissingForeignAssignedId no usages /dev/null
invalidHydrationMode Doctrine\ORM\EntityManager ManagerException
mismatchedEventManager Doctrine\ORM\EntityManager ManagerException
missingIdentifierField Doctrine\ORM\EntityManager ManagerException
missingMappingDriverImpl Doctrine\ORM\EntityManager ManagerException
unrecognizedIdentifierFields Doctrine\ORM\EntityManager ManagerException
cantUseInOperatorOnCompositeKeys Doctrine\ORM\Persisters\Entity\BasicEntityPersister PersisterException
invalidFlushMode no usages /dev/null
invalidOrientation Doctrine\ORM\Persisters\Entity\BasicEntityPersister PersisterException
unexpectedAssociationValue Doctrine\ORM\UnitOfWork ???
unrecognizedField Doctrine\ORM\Persisters\Entity\BasicEntityPersister PersisterException
findByRequiresParameter Doctrine\ORM\EntityRepository RepositoryException
invalidFindByCall no usages /dev/null
invalidMagicCall Doctrine\ORM\EntityRepository RepositoryException
invalidFindByInverseAssociation Doctrine\ORM\Persisters\Entity\BasicEntityPersister RepositoryException
invalidResultCacheDriver Doctrine\ORM\AbstractQuery CacheException
queryCacheNotConfigured Doctrine\ORM\Configuration CacheException
metadataCacheNotConfigured Doctrine\ORM\Configuration CacheException
queryCacheUsesNonPersistentCache Doctrine\ORM\Configuration CacheException
metadataCacheUsesNonPersistentCache Doctrine\ORM\Configuration CacheException
**Original Pull Request:** https://github.com/doctrine/orm/pull/6743 **State:** closed **Merged:** Yes --- This class is too big, and some exceptions could inherit from `doctrine/common` exceptions instead of this one. # TODO - [x] remove unused exception methods - [x] `entityMissingAssignedIdForField` - [x] `entityMissingForeignAssignedId` - [x] `invalidFindByCall` - [x] `invalidFlushMode` - [x] `notSupported` - [x] `namedNativeQueryNotFound` - [x] `namedQueryNotFound` - [x] `proxyClassesAlwaysRegenerating` - [x] `invalidEntityRepository` - [x] `unknownEntityNamespace` - [x] `entityManagerClosed` - [x] `invalidHydrationMode` - [x] `mismatchedEventManager` - [x] `missingIdentifierField` - [x] `missingMappingDriverImpl` - [x] `unrecognizedIdentifierFields` - [x] `cantUseInOperatorOnCompositeKeys` - [x] `invalidOrientation` - [x] `unexpectedAssociationValue` - [x] `unrecognizedField` - [x] `findByRequiresParameter` - [x] `invalidMagicCall` - [x] `invalidFindByInverseAssociation` - [x] `invalidResultCacheDriver` - [x] `queryCacheNotConfigured` - [x] `metadataCacheNotConfigured` - [x] `queryCacheUsesNonPersistentCache` - [x] `metadataCacheUsesNonPersistentCache` # Proposal | method | used in class | should implement | |---------------------------------------|-------------------------------------------------------|--------------------------| | `notSupported` | `Doctrine\ORM\Tools\SchemaTool` | `SchemaToolException` | | `namedNativeQueryNotFound` | `Doctrine\ORM\Configuration` | `ConfigurationException` | | `namedQueryNotFound` | `Doctrine\ORM\Configuration` | `ConfigurationException` | | `proxyClassesAlwaysRegenerating` | `Doctrine\ORM\Configuration` | `ConfigurationException` | | `invalidEntityRepository` | `Doctrine\ORM\Configuration` | `ConfigurationException` | | `unknownEntityNamespace` | `Doctrine\ORM\Configuration` | `ConfigurationException` | | `entityManagerClosed` | `Doctrine\ORM\EntityManager` | `ManagerException` | | `entityMissingAssignedIdForField` | no usages | /dev/null | | `entityMissingForeignAssignedId` | no usages | /dev/null | | `invalidHydrationMode` | `Doctrine\ORM\EntityManager` | `ManagerException` | | `mismatchedEventManager` | `Doctrine\ORM\EntityManager` | `ManagerException` | | `missingIdentifierField` | `Doctrine\ORM\EntityManager` | `ManagerException` | | `missingMappingDriverImpl` | `Doctrine\ORM\EntityManager` | `ManagerException` | | `unrecognizedIdentifierFields` | `Doctrine\ORM\EntityManager` | `ManagerException` | | `cantUseInOperatorOnCompositeKeys` | `Doctrine\ORM\Persisters\Entity\BasicEntityPersister` | `PersisterException` | | `invalidFlushMode` | no usages | /dev/null | | `invalidOrientation` | `Doctrine\ORM\Persisters\Entity\BasicEntityPersister` | `PersisterException` | | `unexpectedAssociationValue` | `Doctrine\ORM\UnitOfWork` | ??? | | `unrecognizedField` | `Doctrine\ORM\Persisters\Entity\BasicEntityPersister` | `PersisterException` | | `findByRequiresParameter` | `Doctrine\ORM\EntityRepository` | `RepositoryException` | | `invalidFindByCall` | no usages | /dev/null | | `invalidMagicCall` | `Doctrine\ORM\EntityRepository` | `RepositoryException` | | `invalidFindByInverseAssociation` | `Doctrine\ORM\Persisters\Entity\BasicEntityPersister` | `RepositoryException` | | `invalidResultCacheDriver` | `Doctrine\ORM\AbstractQuery` | `CacheException` | | `queryCacheNotConfigured` | `Doctrine\ORM\Configuration` | `CacheException` | | `metadataCacheNotConfigured` | `Doctrine\ORM\Configuration` | `CacheException` | | `queryCacheUsesNonPersistentCache` | `Doctrine\ORM\Configuration` | `CacheException` | | `metadataCacheUsesNonPersistentCache` | `Doctrine\ORM\Configuration` | `CacheException` |
admin added the pull-request label 2026-01-22 16:06:29 +01:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: doctrine/archived-orm#10118