I would say that this is normal Hibernate behaviour.
You have mapped your collections using cascade="all ..." this tells hibernate that all operations should be cascaded along the association. From Hibernate doc
Quote:
Mapping an association (either a single valued association, or a collection) with cascade="all" marks the association as a parent/child style relationship where save/update/delete of the parent results in save/update/delete of the child or children.
Thats probably why the version gets incremented even though the actual child has not been modified.
For more information read
http://docs.jboss.org/hibernate/stable/core/reference/en/html/objectstate.html#objectstate-transitive