Index: lib/Doctrine/Hydrator/Graph.php =================================================================== --- lib/Doctrine/Hydrator/Graph.php (revision 7690) +++ lib/Doctrine/Hydrator/Graph.php (working copy) @@ -252,8 +252,11 @@ $oneToOne = true; if ( ! isset($nonemptyComponents[$dqlAlias]) && ! isset($prev[$parent][$relationAlias])) { $prev[$parent][$relationAlias] = $this->getNullPointer(); - } else if ( ! isset($prev[$parent][$relationAlias])) { - $element = $this->getElement($data, $componentName); + } else { + //is the element cached in the parent table identityMap? + $element = isset($prev[$parent][$relationAlias]) + ? $prev[$parent][$relationAlias] + : $this->getElement($data, $componentName); // [FIX] Tickets #1205 and #1237 $event->set('data', $element);