diff --git a/lib/Doctrine/ORM/UnitOfWork.php b/lib/Doctrine/ORM/UnitOfWork.php index ed6a65e3e4b..200da1f1222 100644 --- a/lib/Doctrine/ORM/UnitOfWork.php +++ b/lib/Doctrine/ORM/UnitOfWork.php @@ -2812,10 +2812,6 @@ public function createEntity($className, array $data, &$hints = []) $joinColumnValue = $data[$srcColumn] ?? null; if ($joinColumnValue !== null) { - if ($joinColumnValue instanceof BackedEnum) { - $joinColumnValue = $joinColumnValue->value; - } - if ($targetClass->containsForeignIdentifier) { $associatedId[$targetClass->getFieldForColumn($targetColumn)] = $joinColumnValue; } else { @@ -2847,7 +2843,8 @@ public function createEntity($className, array $data, &$hints = []) // Check identity map first // FIXME: Can break easily with composite keys if join column values are in // wrong order. The correct order is the one in ClassMetadata#identifier. - $relatedIdHash = implode(' ', $associatedId); + $associatedIdFlattened = $this->identifierFlattener->flattenIdentifier($targetClass, $associatedId); + $relatedIdHash = implode(' ', $associatedIdFlattened); switch (true) { case isset($this->identityMap[$targetClass->rootEntityName][$relatedIdHash]):