Right didn't though of that @BenMorel . With the actual code it will ``throw ORMInvalidArgumentException::invalidCompositeIdentifier()`` from method [UnitOfWork::getSingleIdentifierValue](https://github.com/doctrine/doctrine2/blob/6e9b15a48fa9db4db6ba3cbb8c4fa5d40306a07c/lib/Doctrine/ORM/UnitOfWork.php#L2942).

To support this scenario we should define a new method ```UnitOfWork::getIdentifierValues``` which return the array of primary keys, and then merge all the returned keys to a single array instead of the simple ``$id[$i]``. 

Obviously, this is more complicated... also, since the composite keys "stacks up" as we walk the relationship, the method  ```UnitOfWork::getIdentifierValues``` should walk all the entities involved in the primary key. I guess in the end, the initial part of ```EntityManager::find``` could be replaced with something similar to:
```
if (is_object($id) && $this->metadataFactory->hasMetadataFor(ClassUtils::getClass($id)))
    $id = $uow->getIdentifierValues($id); // walk all relation and collect ids
```
What do think @Ocramius ? Is this possible without braking somethink else? :)