Even though Doctrine won't fix the graph, it will load a fixed graph on the next hydration. If I call $item->setContainer($container), it will automagically add $item to $container->items, the next time I hydrate that entity. Only the opposite is not true: since adding $item to $container->items won't set $item->container, on the next reload my collection will be empty (even though I had added items before persisting/flushing).
Doctrine will empty my collections on the next reload, if the collection's items' references to the owner are not set (obviously). You claim this is intended (for Doctrine probably shouldn't be changing my object states), but I think (and many people on stackoverflow and on the groups seem to agree) this causes a lot of referential integrity issues. I just don't see why I'd ever call $container->addItem, if it still requires me to call $item->setContainer($container) – and calling $item->setContainer($container) alone would have the same effect (even though it would keep my currently loaded graph out-of-sync with the database, the graph would be correctly reloaded on the next page hit, which seems to almost always be the case). I also don't see the issue of having Doctrine update the container property on each item, if they were added to $container->items.
I already got that Doctrine won't do it. I'd love if you could ellaborate on why Doctrine shouldn't do it.