Don't clone, use explicit change tracking instead
Currently the parameter converter uses "clone" to create copies of objects,
Much better would be to automatically set the change tracking to DEFERRED_EXPLICIT for all entities: http://www.doctrine-project.org/docs/orm/2.0/en/reference/change-tracking-policies.html
This would mean changes are only tracked when you explicitly call $em->persist(). You could then switch the implementation of the Doctrine Base Repository to not use ->merge, but ->persist.
This would greatly simplify the code and make it much more robust.